Submission #4679

#TimeUsernameProblemLanguageResultExecution timeMemory
4679cki86201Saveit (IOI10_saveit)C++98
50 / 100
562 ms15696 KiB
#include "grader.h"
#include "encoder.h"
//for 50point orz;

void encode_number(int x)
{
	for(int i=0;i<10;i++)encode_bit((x&(1<<i))!=0);
}

int d[1010],q[1010];
int st[1010],en[2000020],next[2000020];
bool check[1010];

void addedge(int s,int d,int c){next[c]=st[s],st[s]=c,en[c]=d;}

void bfs(int x)
{
	int *f,*r;
	f=r=q;
	*f++=x;
	check[x]=1;
	while(f!=r){
		int t=*r++;
		for(int i=st[t];i!=-1;i=next[i]){
			if(!check[en[i]])*f++=en[i],check[en[i]]=true,d[en[i]]=d[t]+1;
		}
	}
}

void encode(int nv, int nh, int ne, int *v1, int *v2){
	int i,j;
	for(i=0;i<nv;i++)st[i]=-1;
	for(i=0;i<ne;i++)addedge(v1[i],v2[i],i<<1),addedge(v2[i],v1[i],i<<1|1);
	for(i=0;i<nh;i++){
		bfs(i);
		for(j=0;j<nv;j++)encode_number(d[j]);
		for(j=0;j<nv;j++)check[j]=d[j]=0;
	}
	return;
}
#include "grader.h"
#include "decoder.h"
//for 50point orz;
void decode(int nv, int nh){
	int i,j,k;
	for(i=0;i<nh;i++)
		for(j=0;j<nv;j++){
			int c=0;
			for(k=0;k<10;k++)c+=(1<<k)*decode_bit();
			hops(i,j,c);
		}
}

Compilation message (stderr)

encoder.cpp: In function 'void encode(int, int, int, int*, int*)':
encoder.cpp:37:33: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   for(j=0;j<nv;j++)check[j]=d[j]=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...