Submission #38704

#TimeUsernameProblemLanguageResultExecution timeMemory
38704khohkoDivide and conquer (IZhO14_divide)C++14
0 / 100
1000 ms11396 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define fr first #define sc second #define N ((ll)(2e5+100)) #define ARRS ((ll)(2e5+100)) #define MOD ((ll)(1e9+7)) ll er[ARRS]; ll dp[ARRS]; ll dc[ARRS]; ll n; struct va{ ll x,g,c; }; va a[ARRS]; int main(){ //freopen("divide.in","r",stdin); //freopen("divide.out","w+",stdout); cin>>n; for(int i=0; i<n; i++){ cin>>a[i].x>>a[i].g>>a[i].c; } ll pas=0; er[n]=n+1; for(int i=n-1; i>=0; i--){ er[i]=i+1; dc[i]=a[i].c; dp[i]=a[i].g; while(er[er[i]]<n){ //cout<<i<<" "<<a[er[er[i]]-1].x-a[i].x<<" < "<<dc[i]<<" "<<dc[er[i]]<<" "<<er[er[i]]<<endl; if(a[er[er[i]]-1].x-a[i].x<=dc[i]+dc[er[i]]){ dp[i]+=dp[er[i]]; dc[i]+=dc[er[i]]; er[i]=er[er[i]]; } } pas=max(pas,dp[i]); } cout<<pas; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...