# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
497942 | 2021-12-24T05:35:54 Z | Aktan | Divide and conquer (IZhO14_divide) | C++17 | 1 ms | 204 KB |
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> #define int long long #define ft first #define sc second using namespace std; const int mod=1e9+7,INF=1e17; int a[100005],b[100005],c[100005]; main(){ int n,ans=0,res=0; cin >> n; for(int i=1;i<=n;i++){ cin >> a[i] >> b[i] >> c[i]; } for(int i=n;i>1;i--){ a[i-1]+=max((int)0,c[i]-(a[i]-a[i-1])); } int tot=0; int w=0; for(int i=1;i<=n;i++){ if(i==1){ tot=b[i]; continue; } if(a[i]-a[i-1]<=c[i-1]+c[i]){ a[i]=a[i-1]; c[i]+=c[i-1]; b[i]+=b[i-1]; } tot=max(tot,b[i]); } cout << tot; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |