제출 #1223447

#제출 시각아이디문제언어결과실행 시간메모리
1223447thangdz2k7Last supper (IOI12_supper)C++20
0 / 100
41 ms4628 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; void ComputeAdvice(int *C, int N, int K, int M){ vector <int> colors(K); iota(colors.begin(), colors.end(), 0); for (int i = 0; i < N; ++ i) colors.push_back(C[i]); vector <int> Next(N + K, N + K), To(N + K); for (int i = N + K - 1; i >= 0; -- i){ To[i] = Next[colors[i]]; Next[colors[i]] = i; } vector <int> cur(N, -1); priority_queue <pair <int, int>> max_out_time; for (int i = 0; i < K; ++ i){ int c = colors[i]; cur[c] = i; max_out_time.push(make_pair(To[i], c)); } vector <int> important(N + K, 1); for (int i = K; i < N + K; ++ i){ int c = colors[i]; if (cur[c] == -1){ auto [t, o] = max_out_time.top(); max_out_time.pop(); important[cur[o]] = 0; cur[o] = -1; } cur[c] = i; max_out_time.push(make_pair(To[i], c)); } for (int i = 0; i < N + K; ++ i) WriteAdvice(important[i]); }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; void Assist(unsigned char *A, int N, int K, int R){ vector <int> can_pop, in(N, 0); for (int i = 0; i < K; ++ i){ in[i] = 1; if (!A[i]) can_pop.push_back(i); } for (int i = K; i < N + K; ++ i){ int c = GetRequest(); if (!in[c]){ PutBack(can_pop.back()); can_pop.pop_back(); } in[c] = 1; if (!A[i]) can_pop.push_back(c); } }
#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...