Submission #251726

# Submission time Handle Problem Language Result Execution time Memory
251726 2020-07-22T08:49:08 Z tinjyu Last supper (IOI12_supper) C++14
0 / 100
310 ms 16952 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=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 time Memory Grader output
1 Incorrect 1 ms 1016 KB Output isn't correct - not an optimal way
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 28 ms 2724 KB Output isn't correct - not an optimal way
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 29 ms 8312 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 1024 KB Error - advice is too long
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 285 ms 16952 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 290 ms 16576 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 277 ms 16516 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 310 ms 16408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 282 ms 16660 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 30 ms 9848 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 271 ms 16440 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 269 ms 16664 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 268 ms 16408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 31 ms 10104 KB Execution killed with signal 11 (could be triggered by violating memory limits)