Submission #419131

#TimeUsernameProblemLanguageResultExecution timeMemory
419131arayiLast supper (IOI12_supper)C++17
0 / 100
143 ms32532 KiB
#include "advisor.h" #include <iostream> #include <vector> #include <queue> #define MP make_pair #define fr first #define sc second #define ad push_back using namespace std; const int N = 1e6 + 30; int i1 = 0; int col[N], b[N], c[N]; int ans[N]; vector<int> fp[N]; void ComputeAdvice(int *C, int N, int K, int M) { for (int i = 0; i < N; i++) fp[i].ad(N); for (int i = N - 1; i >= 0; i--) fp[C[i]].ad(i); priority_queue <pair<int, int> > q; for (int i = 0; i < K; i++) q.push(MP(fp[i].back(), i)), col[i] = 1, b[i] = i; for (int i = 0; i < N; i += K) { int ss = min(N, i + K) - i; for (int j = 0; j < ss; j++) c[j] = i1 + j; for (int j = i; j < min(N, i + K); j++) { if (col[C[j]]) continue; int p = q.top().sc; q.pop(); ans[c[p]] = 1; col[C[j]] = 1, col[b[p]] = 0; b[p] = C[j], c[p] = i1 + ss + j - i; fp[C[j]].pop_back(); q.push(MP(fp[C[j]].back(), p)); } i1 += ss * 2; } for (int i = 0; i < i1; i++) WriteAdvice(ans[i]); }
#include "assistant.h" #include <iostream> #include <vector> #include <queue> #define MP make_pair #define fr first #define sc second #define ad push_back using namespace std; const int N1 = 1e6 + 30; int ii; int col1[N1], b1[N1]; vector <int> fp1; void Assist(unsigned char *A, int N, int K, int R) { for (int i = 0; i < K; i++) col1[i] = 1, b1[i] = i; for (int i = 0; i < N; i += K) { int ss = min(N, i + K) - i; for (int j = 0; j < ss; j++) if (A[ii + j] == 1) fp1.ad(j); for (int j = i; j < min(N, i + K); j++) { int a = GetRequest(); if (col1[a]) continue; int p = fp1.back(); fp1.pop_back(); col1[b1[p]] = 0, col1[a] = 1; PutBack(b1[p]); b1[p] = a; if (A[ii + ss + j - i] == 1) fp1.ad(p); } ii += ss * 2; } }
#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...