Submission #671452

#TimeUsernameProblemLanguageResultExecution timeMemory
671452smartmonkyDivide and conquer (IZhO14_divide)C++14
0 / 100
0 ms212 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() using namespace std; const int N = 100001; struct st{ int l, r, g, e; }; st t[N * 4]; st a[N]; int n; st merge(st a, st b){ st res = {}; res.g = a.g + b.g; res.e = a.e + b.e; res.l = a.l; res.r = b.r; return res; } void build(int v = 1,int tl = 1, int tr = n){ if(tl == tr){ t[v] = a[tl]; }else{ int mid = (tl + tr) >> 1; build(v * 2, tl, mid); build(v * 2 + 1,mid + 1, tr); t[v] = merge(t[v * 2], t[v * 2 + 1]); } } st get(int l, int r, int v = 1, int tl = 1, int tr = n){ if(tl > r || tr < l) return {}; if(tl >= l && tr <= r){ return t[v]; } int mid = (tl + tr) >> 1; return merge(get(l, r, v * 2, tl, mid), get(l, r, v * 2 + 1, mid + 1, tr)); } main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i].l >> a[i].g >> a[i].e; a[i].r = a[i].l; } build(); int ans = 0; for(int i = 1; i <= n; i++){ int l = i - 1, r = n + 1; while(r - l > 1){ int mid = (l + r) >> 1; st g = get(i, mid); if(g.e >= abs(g.r - g.l)){ ans = max(ans, g.g); //cout << i <<" " << mid << endl; l = mid; }else r = mid; } } ans = max(get(n,n).g, ans); cout << ans; }

Compilation message (stderr)

divide.cpp:46:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   46 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...