제출 #121998

#제출 시각아이디문제언어결과실행 시간메모리
121998baluteshih최후의 만찬 (IOI12_supper)C++14
100 / 100
263 ms144112 KiB
#include <bits/stdc++.h> #define jizz ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define pb push_back #define ET cout << "\n" #define MEM(i,j) memset(i,j,sizeof i) #define F first #define S second #define MP make_pair #define ALL(v) v.begin(),v.end() #define DB(a,s,e) {for(int i=s;i<e;++i) cout << a[i] << " ";ET;} using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #include "advisor.h" deque<int> pl[100005]; vector<int> seq; set<pii> pq; bitset<100005> inq,brk,beg; int nw[100005],ls[100005]; void ComputeAdvice(int *C, int N, int K, int M) { int L=__lg(K),cnt=0; for(int i=0;i<N;++i) pl[C[i]].pb(i); for(int i=0;i<N;++i) pl[i].pb(N); for(int i=0;i<K;++i) inq[i]=1,pq.insert(MP(pl[i][0],i)),nw[i]=i,ls[i]=-1; for(int i=0;i<N;++i) if(inq[C[i]]) { if(!~ls[C[i]]) beg[C[i]]=1; else brk[ls[C[i]]]=1; ls[C[i]]=i,pq.erase(MP(i,C[i])),pl[C[i]].pop_front(),pq.insert(MP(pl[C[i]][0],C[i])); } else { auto tmp=--pq.end(); inq[tmp->S]=0,nw[C[i]]=nw[tmp->S],pq.erase(tmp),pl[C[i]].pop_front(); pq.insert(MP(pl[C[i]][0],C[i])),inq[C[i]]=1,ls[C[i]]=i; } for(int i=0;i<K;++i) WriteAdvice(beg[i]); for(int i=0;i<N;++i) WriteAdvice(brk[i]); }
#include <bits/stdc++.h> #define jizz ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define pb push_back #define ET cout << "\n" #define MEM(i,j) memset(i,j,sizeof i) #define F first #define S second #define MP make_pair #define ALL(v) v.begin(),v.end() #define DB(a,s,e) {for(int i=s;i<e;++i) cout << a[i] << " ";ET;} using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #include "assistant.h" int nnw[100005],rrel[100005]; set<int> s; void Assist(unsigned char *A, int N, int K, int R) { for(int i=0;i<K;++i) { nnw[i]=i,rrel[i]=i; if(!A[i]) s.insert(i); } for(int i=0;i<N;++i) { int cur=GetRequest(),g; if(rrel[nnw[cur]]!=cur) { g=*s.begin(),s.erase(s.begin()); PutBack(rrel[g]),rrel[g]=cur,nnw[cur]=g; } else g=nnw[cur]; if(!A[i+K]) s.insert(g); } }

컴파일 시 표준 에러 (stderr) 메시지

advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:25:6: warning: unused variable 'L' [-Wunused-variable]
  int L=__lg(K),cnt=0;
      ^
advisor.cpp:25:16: warning: unused variable 'cnt' [-Wunused-variable]
  int L=__lg(K),cnt=0;
                ^~~
#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...