Submission #523860

#TimeUsernameProblemLanguageResultExecution timeMemory
523860Bill_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 i = n, ans = 0, d;
	for(; i >= 1; i -= 0){
		d = 0;
		while(d == 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;
			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...