제출 #251726

#제출 시각아이디문제언어결과실행 시간메모리
251726tinjyu최후의 만찬 (IOI12_supper)C++14
0 / 100
310 ms16952 KiB
#include <iostream> #include <algorithm> #include "advisor.h" using namespace std; long long int maxlen,ans[100005],k,map[100005],in[100005],t[100005],p[100005]; struct node{ long long int road,id; }now[100005]; struct cmp{ bool operator()(const node &a,const node &b) { return a.road<b.road; } }; void find(long long int x) { for(int i=1;i<=maxlen;i++) { char tmp; if(x%2==0)tmp=0; else tmp=1; WriteAdvice(tmp); //cout<<x%2<<" "; x/=2; } return ; } void ComputeAdvice(int *C, int N, int K, int M) { k=K; long long int x=1; while(x<k) { x*=2; maxlen++; } for(int i=0;i<N;i++)now[i].road=1000009; for(int i=N-1;i>=0;i--) { map[i]=now[C[i]].road; now[C[i]].road=i; } for(int i=0;i<N;i++)p[i]=-1; for(int i=0;i<K;i++) { t[i]=i; now[i].id=i; p[i]=i; push_heap(now,now+i+1,cmp()); } //for(int i=0;i<K;i++)cout<<now[i].id<<" "; //cout<<endl; for(int i=0;i<N;i++) { if(p[C[i]]!=-1) { if(now[C[i]].road!=1000009)now[C[i]].road=map[now[C[i]].road]; continue; } else { pop_heap(now,now+K,cmp()); p[C[i]]=p[now[K-1].id]; find(p[C[i]]); p[now[K-1].id]=-1; now[C[i]].road=map[now[C[i]].road]; now[K-1].id=C[i]; push_heap(now,now+K,cmp()); } } }
#include "assistant.h" #include <iostream> using namespace std; long long int a[100005],pp=0,malen,no[100005],pe[100005]; int find() { long long int tmp=0,x=1; for(int i=pp;i<pp+malen;i++) { if(a[i]=='1')tmp+=x; x*=2; } pp+=malen; return tmp; } void Assist(unsigned char *A, int N, int K, int R) { for(int i=0;i<R;i++) { //cout<<A[i]<<endl; a[i]=A[i]; } int k=K; long long int x=1; while(x<k) { x*=2; malen++; } for(int i=0;i<N;i++)pe[i]=-1; for(int i=0;i<k;i++) { no[i]=i; pe[i]=i; } for(int i=0;i<N;i++) { long long int tmp=GetRequest(); if(pe[tmp]!=-1) { continue; } long long int temp=find(); PutBack(no[temp]); pe[no[temp]]=-1; no[temp]=tmp; pe[tmp]=temp; } }
#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...