Submission #523873

#TimeUsernameProblemLanguageResultExecution timeMemory
523873Bill_00Money (IZhO17_money)C++14
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> #define MOD 1000000007 typedef long long ll; using namespace std; int a[1000005],b[1000005],pre[1000005],nex[1000005],cnt[1000005]; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; cnt[a[i]]++; b[i] = a[i]; } sort(b + 1, b + n + 1); for(int i = 2; i <= n; i++){ if(b[i] != b[i-1]){ pre[b[i]]=b[i-1]; } } for(int i = 1; i < n; i++){ if(b[i] != b[i+1]){ nex[b[i]] = b[i+1]; } } int e, i = n, ans = 0, d; for(; i >= 1; i -= 0){ d = 0, e = 0; while(d == 0 || (e == 0 && cnt[a[i + 1]] == 0 && pre[a[i + 1]] == a[i]) || a[i + 1] == a[i]){ // cout << pre[a[i+1]] << ' ' << a[i] << ' ' << i << '\n'; if(i == 0) break; if(d){ if(a[i + 1] > a[i]) e++; } d++; cnt[a[i]]--; if(cnt[a[i]] == 0){ pre[nex[a[i]]] = pre[a[i]]; nex[pre[a[i]]] = nex[a[i]]; } i--; } // cout << i << '\n'; ans++; } 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...