Submission #102589

#TimeUsernameProblemLanguageResultExecution timeMemory
102589AbduMDivide and conquer (IZhO14_divide)C++14
100 / 100
191 ms13568 KiB
/// In the name of GOD /// I love my MOTHER /// Only GOLD #include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define sz(s) (ll)(s.size()) #define pb push_back #define pf push_front #define ppb pop_back() #define ppf pop_front() #define F first #define S second #define MP make_pair #define ort1 exit(0); #define nl "\n" #define rep(i, l, r) for(int i = (l); i <= (r); ++i) #define per(i, l, r) for(int i = (l); i >= (r); i--) #define TL clock() / (double)CLOCKS_PER_SEC #define NFS ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0); using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; const double pi = acos(-1.0); const double eps = 1e-7; const long long INF = 1e18 + 1; const long long inf = 1e12 + 788; const int mod = 1e9 + 7; const int N = 1e5 + 7; int n; ll x[N], g[N], d[N]; ll a[N], b[N]; vector<ll> v; map<ll, int> m; int main(){ #ifdef ioi freopen("in.txt", "r", stdin); #endif // ioi cin >> n; rep(i, 1, n){ cin >> x[i] >> g[i] >> d[i]; g[i] += g[i - 1]; d[i] += d[i - 1]; a[i] = d[i] - x[i]; b[i] = d[i - 1] - x[i]; } ll ans = -mod; for(int i = 1; i <= n; ++i){ if(!v.size()) { v.pb(b[i]); m[b[i]] = i; } else if(b[i] < v.back()){ v.pb(b[i]); m[b[i]] = i; } int l = 0, r = v.size() - 1; while(l <= r){ int md = ((l + 1) + (r + 1)) / 2; if(v[md - 1] > a[i]) l = (md - 1) + 1; else if(v[md - 1] <= a[i]) r = (md - 1) - 1; } ans = max(ans, g[i] - g[m[v[r + 1]] - 1]); } cout << ans; #ifdef ioi cout << nl << TL << nl; #endif // ioi ort1 }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...