Submission #710306

#TimeUsernameProblemLanguageResultExecution timeMemory
710306ld_minh4354Money (IZhO17_money)C++17
100 / 100
1455 ms112144 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<long long, null_type, less<long long>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define int long long #define fi first #define se second #define pb push_back #define debug(x) cout<<#x<<": "<<x<<"\n" bool comp(vector<int> v1, vector<int> v2) { return v1[0]<v2[0]; } signed main() { ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); // freopen("input.000","r",stdin); // freopen("output.000","w",stdout); // srand((unsigned)time(NULL)); // rand() int n,i,a[1000005],ans,m,r,pos; vector<int> v[1000005]; ordered_set s; cin>>n;a[0]=0; for (i=1;i<n+1;i++) cin>>a[i]; m=1; for (i=1;i<n+1;i++) { if (a[i-1]>a[i]) m++; v[m].pb(a[i]); } // sort(v+1,v+m+1,comp); // for (i=1;i<m+1;i++) // { // cout<<i<<": "; // for (auto val:v[i]) cout<<val<<" "; // cout<<"\n"; // } ans=m; s.insert(0);s.insert(1e7); for (i=1;i<m+1;i++) { pos=s.order_of_key(v[i][0]+1); r=*s.find_by_order(pos); for (auto val:v[i]) if (val>r) { ans++; pos=s.order_of_key(val+1); r=*s.find_by_order(pos); } for (auto val:v[i]) s.insert(val); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...