Submission #230996

#TimeUsernameProblemLanguageResultExecution timeMemory
230996cstuartBaloni (COCI15_baloni)C++17
100 / 100
1055 ms89080 KiB
#define USE_MATH_DEFINES 1
#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;
#define MOD 998244353ll
#define INF 1000000000000000000ll
#define EPS 1e-9
#define getchar_unlocked _getchar_nolock
#define putchar_unlocked _putchar_nolock

typedef long long         ll;
typedef long double       ld;
typedef pair <ll,ll>      pl;
typedef tuple <ll,ll,ll>  tl;

ll N, acnt, maxh, chgt, cpos;
set <ll> H[1000005];

int main() {

	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> N;
	
	for (ll i = 1; i <= N; i++) {
		ll x;
		cin >> x;
		H[x].insert(i);
	}
	
	acnt = 0;
	maxh = 1000000;
	
	while (maxh > 0) {
		if (H[maxh].empty()) {
			maxh--;
			continue;
		}
		acnt++;
		chgt = maxh;
		cpos = 0;
		while (true) {
			auto it = H[chgt].upper_bound(cpos);
			if (it == H[chgt].end()) break;
			cpos = *it;
			H[chgt].erase(it);
			chgt--;
		}
	}
	
	cout << acnt;
	
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...