제출 #63008

#제출 시각아이디문제언어결과실행 시간메모리
63008SpaimaCarpatilor최후의 만찬 (IOI12_supper)C++17
0 / 100
138 ms24060 KiB
#include "advisor.h" #include<bits/stdc++.h> using namespace std; static int lst[100009]; void ComputeAdvice(int *C, int N, int K, int M) { for (int i=0; i<N; i++) lst[i] = -1; for (int i=0; i<N; i++) lst[C[i]] = i; for (int i=0; i<K; i++) WriteAdvice (lst[i] == -1); for (int j=0; j<N; j++) WriteAdvice (lst[C[j]] == j); }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; static bool ap[100009], dispensable[100009]; static queue < int > canDispense; static set < int > inSet; void Assist(unsigned char *A, int N, int K, int R) { for (int i=0; i<K; i++) { ap[i] = 1, dispensable[i] = A[i]; if (dispensable[i]) canDispense.push (i); else inSet.insert (i); } for (int i = 0; i < N; i++) { int req = GetRequest(); if (ap[req]) { if (A[K + i]) dispensable[req] = 1, canDispense.push (req), inSet.erase (req); continue; } if (!canDispense.empty ()) { int c = canDispense.front (); canDispense.pop (); ap[c] = 0; PutBack (c); } else { auto it = inSet.begin (); int c = *it; inSet.erase (it); ap[c] = 0; PutBack (c); } if (A[K + i]) dispensable[req] = ap[req] = 1, canDispense.push (req); else ap[req] = 1, inSet.insert (req); } }
#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...