Submission #671442

#TimeUsernameProblemLanguageResultExecution timeMemory
671442smartmonkyDivide 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 = {}; if(a.e + b.e - abs(a.r - b.l) < 0){ if(a.g < b.g) return b; return a; } res.g = a.g + b.g; res.e = a.e + b.e - abs(a.r - b.l); 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]); } //cout << tl <<"-" << tr <<" " << t[v].g << endl; } int get(int l, int r, int v = 1, int tl = 1, int tr = n){ if(tl > r || tr < l) return 0; if(tl >= l && tr <= r){ return t[v].g; } int mid = (tl + tr) >> 1; return 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++){ ans = max(ans, get(1, i)); } cout << ans; }

Compilation message (stderr)

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