Submission #230933

#TimeUsernameProblemLanguageResultExecution timeMemory
230933jiahngBaloni (COCI15_baloni)C++14
60 / 100
2092 ms131076 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pi; typedef vector <ll> vi; typedef vector <pi> vpi; #define f first #define s second #define FOR(i,s,e) for(ll i=s;i<=ll(e);++i) #define DEC(i,s,e) for(ll i=s;i>=ll(e);--i) #define pb push_back #define all(x) (x).begin(), (x).end() #define lbd(x, y) lower_bound(all(x), y) #define ubd(x, y) upper_bound(all(x), y) #define aFOR(i,x) for (auto i: x) #define mem(x,i) memset(x,i,sizeof x) #define fast ios_base::sync_with_stdio(false),cin.tie(0) #define maxn 1000001 int N; int num[maxn]; set <int> height[maxn]; int A[maxn]; int main(){ fast; cin>>N; multiset <int> S; FOR(i,1,N){ cin>>A[i]; S.insert(A[i]); num[A[i]]++; height[A[i]].insert(i); } int total = N; int ans = 0; while (total > 0){ //throw at mx int mx = *(--S.end()); int cur = 0; while (1){ if (mx < 0 || height[mx].empty()) break; auto it = height[mx].lower_bound(cur); if (it == height[mx].end()) break; cur = *it; height[mx].erase(it); S.erase(S.find(mx)); mx--; total--; } ans++; } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...