#include <cstdio> #include <iostream> #include <vector> #include <list> #include <string> #include <set> #include <map> #include <algorithm> #include <utility> #include <cmath> #include <queue> #include <stack> #include <cassert> #include <cstring> #include <climits> #include <functional> #define VAR(i,v) __typeof(v) i = (v) #define SIZE(x) ((int)(x).size()) #define ALL(x) (x).begin(), (x).end() #define REP(i,b) for(int i=0; i<(b); ++i) #define FOR(i,a,b) for(int i=(a); i<=(b); ++i) #define FORD(i,a,b) for(int i=(a); i>=(b); --i) #define FOREACH(i,c) for(VAR(i,(c).begin()); i != (c).end(); ++i) #define PB push_back #define MP make_pair #define ST first #define ND second #define NL printf("\n") using namespace std; typedef pair<int,int> PII; typedef vector<int> VI; typedef long long LL; const int MAXN = 1000005; LL t[MAXN]; LL dif[MAXN]; LL res[MAXN]; int main() { int n, m; scanf("%d %d", &n, &m); FOR(i,1,n) scanf("%lld", &t[i]); FOR(i,1,n) dif[i] = t[i]-t[i-1]; REP(i,m) { LL d; scanf("%lld", &d); LL sum = 0; FOR(j,1,n) { LL prev_res = res[j-1]; res[j] = -min(dif[j]-d-prev_res, 0ll); sum += res[j]; } 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <cstdio> #include <iostream> #include <vector> #include <list> #include <string> #include <set> #include <map> #include <algorithm> #include <utility> #include <cmath> #include <queue> #include <stack> #include <cassert> #include <cstring> #include <climits> #include <functional> #define VAR(i,v) __typeof(v) i = (v) #define SIZE(x) ((int)(x).size()) #define ALL(x) (x).begin(), (x).end() #define REP(i,b) for(int i=0; i<(b); ++i) #define FOR(i,a,b) for(int i=(a); i<=(b); ++i) #define FORD(i,a,b) for(int i=(a); i>=(b); --i) #define FOREACH(i,c) for(VAR(i,(c).begin()); i != (c).end(); ++i) #define PB push_back #define MP make_pair #define ST first #define ND second #define NL printf("\n") using namespace std; typedef pair<int,int> PII; typedef vector<int> VI; typedef long long LL; const int MAXN = 1000005; LL t[MAXN]; LL dif[MAXN]; LL res[MAXN]; int main() { int n, m; scanf("%d %d", &n, &m); FOR(i,1,n) scanf("%lld", &t[i]); FOR(i,1,n) dif[i] = t[i]-t[i-1]; REP(i,m) { LL d; scanf("%lld", &d); LL sum = 0; FOR(j,1,n) { LL prev_res = res[j-1]; res[j] = -min(dif[j]-d-prev_res, 0ll); sum += res[j]; } printf("%lld\n", sum); } return 0; } |