#include <stdio.h> #include <string.h> //#define DEBUG #ifdef DEBUG #define DBG(...) { fprintf(stderr, "==> [%s %d] ", __FILE__, __LINE__); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); } #else #define DBG(...) #endif static const int MAX = 200000; // roznice pomiedzy klientami static long long d[MAX]; int main() { int n, m; long long pc = 0; scanf("%d %d", &n, &m); for (int i = 0; i < n; ++i) { long long c; scanf("%lld", &c); d[i] = c - pc; pc = c; } for (int i = 0; i < m; ++i) { long long sum = 0; long long t, next = 0; scanf("%lld", &t); for (int j = 0; j < n; ++j) { if (d[j] + next < t) { long long diff = t - (d[j] + next); DBG("[i:%d][j:%d] diff = t:%lld - d:%lld => %lld", i, j, t, d[j], diff); sum += diff; next = -diff; } else { next = 0; } } printf("%lld\n", sum); } 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 37 38 39 40 41 42 43 | #include <stdio.h> #include <string.h> //#define DEBUG #ifdef DEBUG #define DBG(...) { fprintf(stderr, "==> [%s %d] ", __FILE__, __LINE__); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); } #else #define DBG(...) #endif static const int MAX = 200000; // roznice pomiedzy klientami static long long d[MAX]; int main() { int n, m; long long pc = 0; scanf("%d %d", &n, &m); for (int i = 0; i < n; ++i) { long long c; scanf("%lld", &c); d[i] = c - pc; pc = c; } for (int i = 0; i < m; ++i) { long long sum = 0; long long t, next = 0; scanf("%lld", &t); for (int j = 0; j < n; ++j) { if (d[j] + next < t) { long long diff = t - (d[j] + next); DBG("[i:%d][j:%d] diff = t:%lld - d:%lld => %lld", i, j, t, d[j], diff); sum += diff; next = -diff; } else { next = 0; } } printf("%lld\n", sum); } return 0; } |