Submission #1271692

#TimeUsernameProblemLanguageResultExecution timeMemory
1271692vtnooTeams (IOI15_teams)C++20
0 / 100
4094 ms10488 KiB
#ifndef teams_h #define teams_h #include <bits/stdc++.h> using namespace std; const int MAXN=500005; int N, A[MAXN], B[MAXN]; void init(int n, int a[], int b[]) { N=n; for(int i=0;i<N;i++){ A[i]=a[i]; B[i]=b[i]; } } int can(int M, int K[]) { vector<int> v(N); for(int i=0;i<N;i++){ v[i]=i; } sort(v.begin(), v.end(), [&](int f, int s){ if(B[f]==B[s]){ return A[f]<A[s]; } return B[f]<B[s]; }); sort(K, K+M); int j=0; multiset<pair<int,int>> s; for(int i=0;i<M;i++){ while(j<N&&A[v[j]]<=K[i]){ s.insert(make_pair(B[v[j]], A[v[j]])); j++; } auto it=s.lower_bound({K[i], 0}); int cnt=0; while(it!=s.end()&&cnt<K[i]){ cnt++; it=s.erase(it); } /* cout<<"=============="<<endl; cout<<i<<endl; cout<<cnt<<endl; cout<<s.size()<<endl; cout<<j<<endl; */ if(cnt!=K[i])return false; } return true; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...