#include<cstdio> #include<algorithm> bool malejaco(int a, int b) { if(a > b) return true; else return false; } long long porost[500000]; // wzrost kazdej trawy w danym momencie int main() { int n, m; scanf("%d%d", &n, &m); int a[500000]; // jak szybko dana trawa rosnie for(int i = 0; i < n; i++) scanf("%d", &a[i]); //std::sort(a, a+n, malejaco); // sortuje malejaco for(int i = 0; i < n; i++) // zeruje tablice porost[i] = 0; long long d0 = 0; // dzien ostatniego koszenia long long skoszono = 0; // ile skoszono long long b, d; // wysokosc i dzien obecnego koszenia for(int i = 0; i < m; i++) { scanf("%lld%lld", &d, &b); for(int j = 0; j < n; j++) { porost[j] += (d - d0) * a[j]; if(porost[j] > b) { skoszono += porost[j] - b; porost[j] = b; } //else //break; } printf("%lld\n", skoszono); d0 = d; skoszono = 0; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include<cstdio> #include<algorithm> bool malejaco(int a, int b) { if(a > b) return true; else return false; } long long porost[500000]; // wzrost kazdej trawy w danym momencie int main() { int n, m; scanf("%d%d", &n, &m); int a[500000]; // jak szybko dana trawa rosnie for(int i = 0; i < n; i++) scanf("%d", &a[i]); //std::sort(a, a+n, malejaco); // sortuje malejaco for(int i = 0; i < n; i++) // zeruje tablice porost[i] = 0; long long d0 = 0; // dzien ostatniego koszenia long long skoszono = 0; // ile skoszono long long b, d; // wysokosc i dzien obecnego koszenia for(int i = 0; i < m; i++) { scanf("%lld%lld", &d, &b); for(int j = 0; j < n; j++) { porost[j] += (d - d0) * a[j]; if(porost[j] > b) { skoszono += porost[j] - b; porost[j] = b; } //else //break; } printf("%lld\n", skoszono); d0 = d; skoszono = 0; } } |