Submission #619440

#TimeUsernameProblemLanguageResultExecution timeMemory
619440HazemTeams (IOI15_teams)C++14
34 / 100
4088 ms11436 KiB
#include <bits/stdc++.h> using namespace std; const int S = 2e5+10; pair<int,int>p[S]; int n; void init(int N, int A[], int B[]) { n = N; for(int i=1;i<=N;i++) p[i] = {A[i-1],B[i-1]}; sort(p+1,p+n+1); } int can(int M, int K[]) { sort(K,K+M); int cur = 1; multiset<int>st; for(int i=0;i<M;i++){ while(cur<=n) if(p[cur].first<=K[i]) st.insert(p[cur++].second); else break; while(!st.empty()){ auto it = st.begin(); if(*it<K[i]) st.erase(*it); else break; } int cnt = 0; while(!st.empty()){ if(cnt==K[i]) break; auto it = st.lower_bound(K[i]); if(it==st.end()) break; st.erase(st.find(*it)); cnt++; } if(cnt!=K[i]) return 0; } return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...