제출 #122079

#제출 시각아이디문제언어결과실행 시간메모리
122079TadijaSebezLast supper (IOI12_supper)C++11
20 / 100
501 ms83400 KiB
#include <bits/stdc++.h> using namespace std; #include "advisor.h" #define pb push_back void ComputeAdvice(int *C, int N, int K, int M) { int L=__builtin_clz(0)-__builtin_clz(N-1); function<void(int)> WriteInt=[&](int x) { for(int i=0;i<L;i++) WriteAdvice(x&1),x>>=1; }; for(int i=0;i<N;i++) WriteInt(C[i]); }
#include <bits/stdc++.h> using namespace std; #include "assistant.h" #define pb push_back void Assist(unsigned char *A, int N, int K, int R) { int L=__builtin_clz(0)-__builtin_clz(N-1); int cur=0; function<int()> ReadInt=[&]() { int ans=0; for(int i=0;i<L;i++) { if(A[cur++]) ans+=1<<i; } return ans; }; vector<int> reqs; for(int i=0;i<N;i++) reqs.pb(ReadInt()); vector<queue<int>> pos; pos.resize(N); for(int i=0;i<N;i++) pos[reqs[i]].push(i); for(int i=0;i<N;i++) pos[i].push(N); vector<bool> in(N,0); set<pair<int,int>> st; function<void(int,int)> push=[&](int x, int tm) { while(pos[x].front()<=tm) pos[x].pop(); int t=pos[x].front(); st.insert({t,x}); in[x]=1; }; for(int i=0;i<K;i++) push(i,-1); for(int i=0;i<N;i++) { int req=GetRequest(); if(in[req]) { st.erase({pos[req].front(),req}); push(req,i); } else { int down=st.rbegin()->second; st.erase(--st.end()); in[down]=0; push(req,i); PutBack(down); } } }
#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...