Submission #2518927


Source Code Expand

#include "maze.h"
#include "grader.h"
#include <iostream>
#include <deque>
#include <map>

using namespace std;


#define MAX(X,Y) ((X)>(Y)?(X):(Y))

int defx(int dx,int dy){
	int left=0,right=500;
	bool f;
	while(right-left>1){
		f=query(-2*((right+left)/2)+dx,dy);
		if(f)
			right=(right+left)/2;
		else
			left=(right+left)/2;
	}
	return left*2+1;

}

int defy(int dx,int dy){
	int left=0,right=500;
	bool f;

	while(right-left>1){
		f=query(dx,-2*((right+left)/2)+dy);
		if(f)
			right=(right+left)/2;
		else
			left=(right+left)/2;
	}
	return left*2+1;

}


void taro(int W, int H, int M[1000][1000])
{
	for(int i=2;i<W-1;i+=2)
	for(int j=1;j<H;j+=2){
		send(M[j][i]);
	}
	for(int i=1;i<W;i+=2)
	for(int j=2;j<H-1;j+=2){
		send(M[j][i]);
	}

	int x,y,buf[4],tem;
	buf[0]=query(0,-1);
	buf[1]=query(1,0);
	buf[2]=query(0,1);
	buf[3]=query(-1,0);
	
	x=defx(0,0);
	y=defy(0,0);
	if(!buf[0]||!buf[2]){
		tem=defx(0,1);
		x=MAX(x,tem);
		tem=defy(0,1);
		y=MAX(y,tem-1);
	}
	if(!buf[1]||!buf[3]){
		tem=defx(1,0);
		x=MAX(x,tem-1);
		tem=defy(1,0);
		y=MAX(y,tem);
	}


	for(int i=0;i<10;i++){
		send(x%2);
		x/=2;
		send(y%2);
		y/=2;
	}
}

int chizu[1000][1000];
int dis[1000][1000];

int jiro(int W, int H, int S, int X[])
{
	for(int j=0;j<H;j++) chizu[j][0]=chizu[j][W-1]=1;
	for(int i=0;i<W;i++) chizu[0][i]=chizu[H-1][i]=1;
	
	for(int i=1;i<W;i+=2)
	for(int j=1;j<H;j+=2){
		chizu[j][i]=0;
	}
	for(int i=2;i<W;i+=2)
	for(int j=2;j<H;j+=2){
		chizu[j][i]=1;
	}

	int call=0;
	for(int i=2;i<W-1;i+=2)
	for(int j=1;j<H;j+=2)
		chizu[j][i]=X[call++];

	for(int i=1;i<W;i+=2)
	for(int j=2;j<H-1;j+=2)
		chizu[j][i]=X[call++];

	int ax=0,ay=0,bx=0,by=0,pro=1;
	for(int i=0;i<10;i++){
		ax+=pro*X[call++];
		ay+=pro*X[call++];
		pro*=2;
	}
/*	for(int j=0;j<H;j++){
		for(int i=0;i<W;i++){
			cout<<chizu[j][i];
		}
		cout<<endl;
	}*/
	int buf[4],tem;
	buf[0]=query(0,-1);
	buf[1]=query(1,0);
	buf[2]=query(0,1);
	buf[3]=query(-1,0);
	
	bx=defx(0,0);
	by=defy(0,0);
	if(!buf[0]||!buf[2]){
		tem=defx(0,1);
		bx=MAX(bx,tem);
		tem=defy(0,1);
		by=MAX(by,tem-1);
	}
	if(!buf[1]||!buf[3]){
		tem=defx(1,0);
		bx=MAX(bx,tem-1);
		tem=defy(1,0);
		by=MAX(by,tem);
	}


	for(int i=0;i<W;i++)
	for(int j=0;j<H;j++){
		dis[j][i]=-1;
	}
	
	deque<pair<int,int> > que;
	pair<int,int> p;
	p.first=bx;p.second=by;
	que.push_back(p);
	dis[by][bx]=0;
	int x,y;
	while(que.size()!=0){
		p=que.front();
		que.pop_front();
		x=p.first; y=p.second;
		if(chizu[y][x+1]==0&&dis[y][x+1]==-1){
			dis[y][x+1]=dis[y][x]+1;
			que.push_back(pair<int,int>(x+1,y));
		}
		if(chizu[y][x-1]==0&&dis[y][x-1]==-1){
			dis[y][x-1]=dis[y][x]+1;
			que.push_back(pair<int,int>(x-1,y));
		}
		if(chizu[y+1][x]==0&&dis[y+1][x]==-1){
			dis[y+1][x]=dis[y][x]+1;
			que.push_back(pair<int,int>(x,y+1));
		}
		if(chizu[y-1][x]==0&&dis[y-1][x]==-1){
			dis[y-1][x]=dis[y][x]+1;
			que.push_back(pair<int,int>(x,y-1));
		}

	}

	return dis[ay][ax];
}

Submission Info

Submission Time
Task B - にひきのきつね と くらがりのめいろ (Two Foxes and the Dark Maze)
User luogu_bot5
Language C++ (GCC 5.4.1)
Score 0
Code Size 3087 Byte
Status CE

Compile Error

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol ...