#include <stdio.h> #define MAX_SIZE 500000 unsigned long b_cut[MAX_SIZE + 1]; int gr[MAX_SIZE + 1]; int M, N; int main () { unsigned long d, d_old, b, sum; long tmp; int n, m; scanf ("%d %d\n", &N, &M); for (n = 1; n <= N; n++) scanf("%d ", &gr[n]); for (d_old = 0, m = 1; m <= M; m++) { scanf("%lu %lu", &d, &b); for (n = 1, sum = 0; n <= N; n++) { b_cut[n] += ((d - d_old) * gr[n]); tmp = b_cut[n] - b; if (tmp > 0) { sum += tmp; b_cut[n] = b; } } printf("%lu\n", sum); d_old = d; } 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 31 32 33 34 35 36 | #include <stdio.h> #define MAX_SIZE 500000 unsigned long b_cut[MAX_SIZE + 1]; int gr[MAX_SIZE + 1]; int M, N; int main () { unsigned long d, d_old, b, sum; long tmp; int n, m; scanf ("%d %d\n", &N, &M); for (n = 1; n <= N; n++) scanf("%d ", &gr[n]); for (d_old = 0, m = 1; m <= M; m++) { scanf("%lu %lu", &d, &b); for (n = 1, sum = 0; n <= N; n++) { b_cut[n] += ((d - d_old) * gr[n]); tmp = b_cut[n] - b; if (tmp > 0) { sum += tmp; b_cut[n] = b; } } printf("%lu\n", sum); d_old = d; } return 0; } |