Submission #868883

#TimeUsernameProblemLanguageResultExecution timeMemory
868883VigneshwaranMahadevanBigger segments (IZhO19_segments)C++14
0 / 100
1 ms440 KiB
#include <bits/stdc++.h> #include<iostream> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); long long t=1;// cin>>t; while(t--){ long long n; cin>>n; vector<long long> a(n) , val(n,0) , dp(n,0),pre(n,0); for(long long i=0;i<n;i++) cin>>a[i]; val[0] = a[0]; dp[0] = 1; pre[0] = a[0]; for(long long i=1;i<n;i++) pre[i] = pre[i-1]+a[i]; vector<long long> bsArr; bsArr.push_back(pre[0]+val[0]); for(long long i=1;i<n;i++){ //index i, //find index j such that // j < i // pre[i] - pre[j] >= val[j] long long j = upper_bound(bsArr.begin(),bsArr.end(),pre[i]) - bsArr.begin() - 1; if(j==-1){ val[i] = pre[i]; dp[i]=1; } else { val[i] = pre[i]-pre[j]; dp[i] = 1+dp[j]; } bsArr.push_back(pre[i]+val[i]); } cout<<dp[n-1]<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...