Submission #671463

#TimeUsernameProblemLanguageResultExecution timeMemory
671463smartmonkyDivide and conquer (IZhO14_divide)C++14
17 / 100
1 ms340 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 m(st a, st b){ st res = {}; res.g = a.g + b.g; res.e = a.e + b.e; 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] = m(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 m(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, r = n; while(l <= r){ int mid = (l + r) >> 1; st g = get(i, mid); if(g.e >= abs(a[i].l - a[mid].r)){ ans = max(ans, g.g); l = mid + 1; }else r = mid - 1; } st g = get(i, r); if(g.e >= abs(a[i].l - a[l].r)) ans = max(ans, g.g); //cout << l <<" "; } //ans = max(get(n,n).g, ans); cout << ans; }

Compilation message (stderr)

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