Submission #1067420

#TimeUsernameProblemLanguageResultExecution timeMemory
1067420DucNguyen2007Money (IZhO17_money)C++14
100 / 100
677 ms62036 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pii pair<int,int> #define pll pair<ll,ll> #define fi first #define se second const int maxN=1e6+5; const ll inf=2e18; int n,a[maxN+1],pre[maxN+1]; set<ll> se; int main() { //freopen("","r",stdin); //freopen("","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; pre[i]=-1; } int pos=-1; se.insert(inf); se.insert(a[1]); for(int i=2;i<=n;i++) { if(a[i]<a[i-1]) { pos=i; break; } else se.insert(a[i]); } int cnt=1; if(pos==-1) { cout<<cnt; return 0; } cnt++; auto itr=se.upper_bound(a[pos]); int i=pos+1; ll base=(*itr); se.insert(a[pos]); while(i<=n) { while(i<=n&&a[i]>=a[i-1]&&(*se.lower_bound(a[i]))<=base) { se.insert(a[i]); i++; } //cout<<i<<" "<<cnt<<" "<<base<<'\n'; if(i<=n) { cnt++; base=(*se.upper_bound(a[i])); se.insert(a[i]); //cout<<i<<" "<<(*se.upper_bound(a[i]))<<'\n'; i++; } } cout<<cnt; } /*20 324662 468027 324662 324662 468027 324662 468027 324662 324662 468027 963343 944165 165047 127072 405908 918630 854332 571550 909067 448963*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...