제출 #1223335

#제출 시각아이디문제언어결과실행 시간메모리
1223335HappyCapybaraLast supper (IOI12_supper)C++20
100 / 100
132 ms74840 KiB
#include<bits/stdc++.h> #include "advisor.h" using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { vector<queue<int>> v(N); for (int i=0; i<N; i++) v[C[i]].push(i); for (int i=0; i<N; i++) v[i].push(N); set<pair<int,int>> s; for (int i=0; i<K; i++) s.insert({-v[i].front(), i}); vector<int> m(K+N, 0); unordered_map<int,int> um; for (int i=0; i<K; i++) um[i] = i; for (int i=0; i<N; i++){ if (s.find({-v[C[i]].front(), C[i]}) != s.end()){ m[um[C[i]]] = 1; s.erase({-v[C[i]].front(), C[i]}); } else s.erase(s.begin()); v[C[i]].pop(); s.insert({-v[C[i]].front(), C[i]}); um[C[i]] = K+i; } for (int x : m) WriteAdvice(x); }
#include<bits/stdc++.h> #include "assistant.h" using namespace std; void Assist(unsigned char *A, int N, int K, int R) { unordered_set<int> a, b; for (int i=0; i<K; i++){ if (A[i]) a.insert(i); else b.insert(i); } for (int i=0; i<N; i++){ int cur = GetRequest(); if (a.find(cur) == a.end()){ PutBack(*b.begin()); b.erase(b.begin()); } else a.erase(cur); if (A[i+K]) a.insert(cur); else b.insert(cur); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...