제출 #287996

#제출 시각아이디문제언어결과실행 시간메모리
287996emanIaicepsa최후의 만찬 (IOI12_supper)C++17
40 / 100
445 ms16112 KiB
#include "advisor.h" #include<bits/stdc++.h> #define pb emplace_back #define pii pair<ll,ll> #define all(n) (n).begin(),(n).end() #define ll long long using namespace std; int pos[100005], bk[100005], in[100005]; void Write(int x,int N){ int mx = __lg(N); vector<int> v; for(int i=0;i<=mx;i++){ v.pb(x&1); x>>=1; } reverse(all(v)); for(auto &i:v){ WriteAdvice(i); } } void ComputeAdvice(int *C, int N, int K, int M) { for(int i=0;i<N;i++){ pos[i] = N+1; } for(int i=N-1;i>=0;i--){ bk[i] = pos[C[i]]; pos[C[i]] = i; } priority_queue<pii> pq; for(int i=0;i<K;i++){ in[i] = 1; pq.push({pos[i],i}); //cout<<i<<" "<<pos[i]<<'\n'; } for(int i=0;i<N;i++){ if(in[C[i]]){ pq.push({bk[i], C[i]}); } else{ int x = pq.top().second; pq.pop(); pq.push({bk[i], C[i]}); in[C[i]] = 1, in[x] = 0; Write(x,N); } } }
#include<bits/stdc++.h> #include "assistant.h" using namespace std; int in2[100005]; void Assist(unsigned char *A, int N, int K, int R) { int id = 0; for(int i=0;i<K;i++) in2[i] = 1; for(int i=0;i<N;i++){ int x = GetRequest(); if(in2[x]) continue; int rm = 0; for(int j=id;id<=j+__lg(N);id++){ rm = rm * 2 + A[id]; } //cout<<"RM : "<<rm<<'\n'; PutBack(rm); in2[rm] = 0; in2[x] = 1; } assert(id <= R); }
#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...