Submission #793560

#TimeUsernameProblemLanguageResultExecution timeMemory
793560UltraFalconTeams (IOI15_teams)C++17
0 / 100
4046 ms43668 KiB
// pragmas #ifndef DEBUG #endif #include <bits/stdc++.h> #include "teams.h" // #define int long long using ll = long long; using namespace std; int N; vector<int> A; vector<int> B; vector<array<int, 2>> students_b; set<array<int, 2>> students_a; int cnt = 0; void init(int _N, int _A[], int _B[]) { cnt = 0; N = _N; A.assign(N, -1); for (int i=0; i<N; i++) { A[i] = _A[i]; } B.assign(N, -1); for (int i=0; i<N; i++) { B[i] = _B[i]; } students_b.clear(); for (int i=0; i<N; i++) { students_b.push_back({B[i], i}); } sort(students_b.begin(), students_b.end()); students_a.clear(); for (int i=0; i<N; i++) { students_a.insert({A[i], i}); } } int can(int M, int _K[]) { cnt++; vector<int> K; for (int i=0; i<M; i++) { K.push_back(_K[i]); } sort(K.begin(), K.end()); int j = 0; for (int i=0; i<M; i++) { while (j<N && students_b[j][0]<K[i]) { int idx = students_b[j][1]; if (students_a.count({A[idx], idx})) students_a.erase({A[idx], idx}); j++; } for (int l=0; l<K[i]; l++) { if (students_a.empty()) return 0; int idx = (*students_a.begin())[1]; // if (! (A[idx] <= K[i] && B[idx] >= K[i]) ) { // // for (auto &x : K) { // // cerr << x << " "; // // } // // cerr << "--" << cnt << "\n"; // cerr << A[idx] << " " << idx << "\n"; // cerr << K[i] << "\n"; // assert(A[idx] <= K[i] && B[idx] >= K[i]); // } if (A[idx] > K[i]) return 0; students_a.erase(students_a.begin()); } } 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...