#include <stdio.h> /* dumb O(n*m) solution */ struct { long long a, b; } t[500000]; int main() { int n, m, i, j; long long pd=0, nd, d, b, s; scanf("%d %d", &n, &m); for(i=0; i<n; ++i) { scanf("%lld", &t[i].a); t[i].b=0; } for(j=0; j<m; ++j) { scanf("%lld %lld", &d, &b); nd=d-pd; pd=d; s=0; for(i=0; i<n; ++i) { if((t[i].b+=nd*t[i].a)>b) { s+=t[i].b-b; t[i].b=b; } } printf("%lld\n", s); } return 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 | #include <stdio.h> /* dumb O(n*m) solution */ struct { long long a, b; } t[500000]; int main() { int n, m, i, j; long long pd=0, nd, d, b, s; scanf("%d %d", &n, &m); for(i=0; i<n; ++i) { scanf("%lld", &t[i].a); t[i].b=0; } for(j=0; j<m; ++j) { scanf("%lld %lld", &d, &b); nd=d-pd; pd=d; s=0; for(i=0; i<n; ++i) { if((t[i].b+=nd*t[i].a)>b) { s+=t[i].b-b; t[i].b=b; } } printf("%lld\n", s); } return 0; } |