제출 #868882

#제출 시각아이디문제언어결과실행 시간메모리
868882VigneshwaranMahadevanBigger segments (IZhO19_segments)C++14
0 / 100
1 ms600 KiB
#include <bits/stdc++.h> #include<iostream> using namespace std; void print(vector<int> &a){ for(auto &x:a) cout<<x<<" "; cout<<endl; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t=1;// cin>>t; while(t--){ int n; cin>>n; vector<int> a(n) , val(n,0) , dp(n,0),pre(n,0); for(int i=0;i<n;i++) cin>>a[i]; val[0] = a[0]; dp[0] = 1; pre[0] = a[0]; for(int i=1;i<n;i++) pre[i] = pre[i-1]+a[i]; vector<int> bsArr; bsArr.push_back(pre[0]+val[0]); for(int i=1;i<n;i++){ //index i, //find index j such that // j < i // pre[i] - pre[j] >= val[j] int 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...