Submission #44693

#TimeUsernameProblemLanguageResultExecution timeMemory
44693heonBaloni (COCI15_baloni)C++14
100 / 100
1952 ms94976 KiB
#include<bits/stdc++.h>

using namespace std;

const int maxn = 1 << 20;

int n;
set <int> st[maxn];
int x[maxn];

auto nadi(int id, int height){
	auto it = st[height].lower_bound(id);
	if(it == st[height].end()) return -1;
	return *it;
}

int main(){
	cin >> n;
	for(int i = 0; i < n; i++){
		cin >> x[i];
		st[x[i]].insert(i);
	}
	int sol = 0;
	for(int i = 0; i < n; i++){
		if(!st[x[i]].count(i)) continue;
		sol++;
		int pos = i;
		while(pos >= 0){
			st[x[pos]].erase(pos);
			pos = nadi(pos,x[pos]-1);
		}
	}
	cout << sol;
}
#Verdict Execution timeMemoryGrader output
Fetching results...