Submission #1017901

#TimeUsernameProblemLanguageResultExecution timeMemory
1017901NintsiChkhaidzeLast supper (IOI12_supper)C++17
0 / 100
75 ms96788 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { for (int i=0;i<N;i++){ int x = C[i]; for (int j = 20; j >= 0; j--){ if (((x >> j) & 1)) WriteAdvice(1); else WriteAdvice(0); } } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; const int MM = 2e6 + 5; int CC[MM]; bool on[MM]; set <int> st[MM]; void Assist(unsigned char *A, int N, int K, int R) { int id=0; for (int i = 0; i < R; i += 20){ for (int j = i; j <= i + 19; j++){ if (A[j] == 1) CC[id] |= (1<<(19-(j-i))); } id+=1; } /* cout<<"Here"<<endl; for (int i=0;i<id;i++) cout<<CC[i]<<" "; cout<<endl;*/ for (int i=id-1;i>=0;i--){ st[CC[i]].insert(i); } for (int i=0;i<K;i++) on[i]=1; int i; for (i = 0; i < N; i++) { int req = GetRequest(); if (on[req]) continue; int mx=-1,idx=-1; for (int j=0;j<N;j++){ if (!on[j]) continue; while (st[j].size() && *st[j].begin() < i){ st[j].erase(st[j].begin()); } if (!st[j].size()){ idx=j; break; } int y = *st[j].begin(); if (y > mx){ mx = y; idx = j; } } PutBack(idx); on[idx] = 0; on[req] = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...