답안 #251724

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
251724 2020-07-22T08:48:21 Z tinjyu 최후의 만찬 (IOI12_supper) C++14
0 / 100
394 ms 16904 KB
#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=0;i<N;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;
	}
	
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 1000 KB Output isn't correct - not an optimal way
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 27 ms 2716 KB Output isn't correct - not an optimal way
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 32 ms 8352 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1100 KB Error - advice is too long
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 394 ms 16904 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 305 ms 16616 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 300 ms 16316 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 270 ms 16408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 271 ms 16340 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 295 ms 16424 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 278 ms 16404 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 272 ms 16400 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 301 ms 16532 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 270 ms 16244 KB Execution killed with signal 11 (could be triggered by violating memory limits)