제출 #1186447

#제출 시각아이디문제언어결과실행 시간메모리
1186447moha1111금 캐기 (IZhO14_divide)C++20
17 / 100
0 ms328 KiB
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") #include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> #define all(a) a.begin() , a.end() using namespace std; using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set; typedef tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>indexed_multiset; void solve() { int n; cin >> n; long long a[n + 1] , b[n + 1] , c[n + 1] , d[n + 1] = {} , e[n + 1] = {}; for(int i = 1 ; i <= n ; i++) cin >> a[i] >> b[i] >> c[i] , d[i] = d[i - 1] + b[i] , e[i] = e[i - 1] + c[i]; long long j = 1 , ans = 0 , cur = 0; for(int i = 1 ; i <= n ; i++) { if(i == 1) { long long po = 0; for(int k = 1 ; k <= n ; k++) { { po += c[k]; if(a[k] - a[i] <= po) j = k , cur = po; } } ans = d[j]; } else { cur -= c[i - 1]; if(cur - (a[j] - a[i]) >= 0) { long long po = cur; for(int k = j + 1 ; k <= n ; k++) { po += c[k]; if(a[k] - a[i] <= po) j = k , cur = po; } } else { long long po = cur; for(int k = i + 1 ; k <= j ; k++) { po += c[k]; if(a[k] - a[i] <= po) { j = k , cur = po; break; } } } ans = max(ans , d[j] - d[i - 1]); } } cout << ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t = 1; // cin >> t; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...