/************************************************************************* * * * XXV Olimpiada Informatyczna * * * * Zadanie: Powodz * * Autor: Jonatan Hrynko * * * *************************************************************************/ #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; typedef vector<int> VI; typedef set<int> SI; const int INF = 1000000007; const int MX = 200001; #define FOR(i, b, e) for(int i = b; i <= e; ++i) #define FORD(i, b, e) for(int i = b; i >= e; --i) #define REP(i, n) FOR(i, 0, n-1) #define REV(i, n) FORD(i, n-1, 0) #define VAR(v, n) __typeof(n) v = (n) #define ALL(c) (c).begin(), (c).end() #define SIZE(c) (int)(c).size() #define FOREACH(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i) #define PB push_back #define PP pop_back #define MP make_pair #define ST first #define ND second int n, m; LL d[MX], t[MX]; LL pop[MX]; int main() { ios::sync_with_stdio(0); cin>>n>>m; FOR(i, 1, n) cin>>t[i]; FOR(i, 1, m) cin>>d[i]; LL sum0 = 0, sum = 0, r; FOR(k, 1, m) { sum0 = sum; sum = 0; FOR(i, 1, n) { r = max(pop[i] + d[k], t[i]); pop[i+1] = r; sum+= r - t[i]; } cout<<sum<<"\n"; } 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 | /************************************************************************* * * * XXV Olimpiada Informatyczna * * * * Zadanie: Powodz * * Autor: Jonatan Hrynko * * * *************************************************************************/ #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; typedef vector<int> VI; typedef set<int> SI; const int INF = 1000000007; const int MX = 200001; #define FOR(i, b, e) for(int i = b; i <= e; ++i) #define FORD(i, b, e) for(int i = b; i >= e; --i) #define REP(i, n) FOR(i, 0, n-1) #define REV(i, n) FORD(i, n-1, 0) #define VAR(v, n) __typeof(n) v = (n) #define ALL(c) (c).begin(), (c).end() #define SIZE(c) (int)(c).size() #define FOREACH(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i) #define PB push_back #define PP pop_back #define MP make_pair #define ST first #define ND second int n, m; LL d[MX], t[MX]; LL pop[MX]; int main() { ios::sync_with_stdio(0); cin>>n>>m; FOR(i, 1, n) cin>>t[i]; FOR(i, 1, m) cin>>d[i]; LL sum0 = 0, sum = 0, r; FOR(k, 1, m) { sum0 = sum; sum = 0; FOR(i, 1, n) { r = max(pop[i] + d[k], t[i]); pop[i+1] = r; sum+= r - t[i]; } cout<<sum<<"\n"; } return 0; } |