Submission #25494


Source Code Expand

#include<queue>
#include<cstdio>
#include"maze.h"
#include"grader.h"

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

const int INF=1<<29;
const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};

struct point{
	int x,y;
	point(){}
	point(int x,int y):x(x),y(y){}
};

void find_pos(int W,int H,int &x0,int &y0){
	int k;
	for(k=0;k<4;k++) if(query(dx[k],dy[k])==0) break;

	int left=0;
	{
		int lo=0,hi=W/2;
		while(lo<hi){
			int mi=(lo+hi+1)/2;
			if(query(-2*mi,0)==0) lo=mi; else hi=mi-1;
		}
		left=min(left,-2*lo);
	}
	if(k<4){
		int lo=0,hi=W/2;
		while(lo<hi){
			int mi=(lo+hi+1)/2;
			if(query(-2*mi+dx[k],dy[k])==0) lo=mi; else hi=mi-1;
		}
		left=min(left,-2*lo+dx[k]);
	}

	int top=0;
	{
		int lo=0,hi=H/2;
		while(lo<hi){
			int mi=(lo+hi+1)/2;
			if(query(0,-2*mi)==0) lo=mi; else hi=mi-1;
		}
		top=min(top,-2*lo);
	}
	if(k<4){
		int lo=0,hi=H/2;
		while(lo<hi){
			int mi=(lo+hi+1)/2;
			if(query(dx[k],-2*mi+dy[k])==0) lo=mi; else hi=mi-1;
		}
		top=min(top,-2*lo+dy[k]);
	}

	x0=1-left;
	y0=1-top;
}

void taro(int W,int H,int M[1000][1000]){
	int tx,ty;
	find_pos(W,H,tx,ty);

	rep(y,H) rep(x,W) if(x%2^y%2) send(M[y][x]);
	rep(i,10) send(!!(tx&1<<i));
	rep(i,10) send(!!(ty&1<<i));
}

int jiro(int W,int H,int n_sig,int sig[]){
	int i_sig=0;
	static int M[1000][1000];
	rep(y,H) rep(x,W) {
		if(x%2^y%2) M[y][x]=sig[i_sig++];
		else        M[y][x]=(x%2&&y%2?0:1);
	}

	int tx=0,ty=0; // taro のいる座標
	rep(i,10) tx|=sig[i_sig++]<<i;
	rep(i,10) ty|=sig[i_sig++]<<i;

	int jx,jy; // jiro のいる座標
	find_pos(W,H,jx,jy);

	// BFS
	static int d[1000][1000];
	rep(y,H) rep(x,W) d[y][x]=INF;
	d[jy][jx]=0;

	queue<point> Q;
	Q.push(point(jx,jy));
	while(!Q.empty()){
		int x=Q.front().x,y=Q.front().y; Q.pop();
		rep(k,4){
			int xx=x+dx[k],yy=y+dy[k];
			if(M[yy][xx]==0 && d[yy][xx]==INF){
				d[yy][xx]=d[y][x]+1;
				Q.push(point(xx,yy));
			}
		}
	}

	return d[ty][tx];
}

Submission Info

Submission Time
Task B - にひきのきつね と くらがりのめいろ (Two Foxes and the Dark Maze)
User fura2
Language IOI-Style C++ (GCC 5.4.1)
Score 100
Code Size 2011 Byte
Status AC
Exec Time 364 ms
Memory 19420 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4 Subtask5
Score / Max Score 13 / 13 11 / 11 21 / 21 21 / 21 34 / 34
Status
AC × 56
AC × 56
AC × 56
AC × 56
AC × 56
Set Name Test Cases
Subtask1 subtask/1, subtask/10, subtask/11, subtask/12, subtask/13, subtask/14, subtask/15, subtask/16, subtask/17, subtask/18, subtask/19, subtask/2, subtask/20, subtask/21, subtask/22, subtask/23, subtask/24, subtask/25, subtask/26, subtask/27, subtask/28, subtask/29, subtask/3, subtask/30, subtask/31, subtask/32, subtask/33, subtask/34, subtask/35, subtask/36, subtask/37, subtask/38, subtask/39, subtask/4, subtask/40, subtask/41, subtask/42, subtask/43, subtask/44, subtask/45, subtask/46, subtask/47, subtask/48, subtask/49, subtask/5, subtask/50, subtask/51, subtask/52, subtask/53, subtask/54, subtask/55, subtask/56, subtask/6, subtask/7, subtask/8, subtask/9
Subtask2 subtask/1, subtask/10, subtask/11, subtask/12, subtask/13, subtask/14, subtask/15, subtask/16, subtask/17, subtask/18, subtask/19, subtask/2, subtask/20, subtask/21, subtask/22, subtask/23, subtask/24, subtask/25, subtask/26, subtask/27, subtask/28, subtask/29, subtask/3, subtask/30, subtask/31, subtask/32, subtask/33, subtask/34, subtask/35, subtask/36, subtask/37, subtask/38, subtask/39, subtask/4, subtask/40, subtask/41, subtask/42, subtask/43, subtask/44, subtask/45, subtask/46, subtask/47, subtask/48, subtask/49, subtask/5, subtask/50, subtask/51, subtask/52, subtask/53, subtask/54, subtask/55, subtask/56, subtask/6, subtask/7, subtask/8, subtask/9
Subtask3 subtask/1, subtask/10, subtask/11, subtask/12, subtask/13, subtask/14, subtask/15, subtask/16, subtask/17, subtask/18, subtask/19, subtask/2, subtask/20, subtask/21, subtask/22, subtask/23, subtask/24, subtask/25, subtask/26, subtask/27, subtask/28, subtask/29, subtask/3, subtask/30, subtask/31, subtask/32, subtask/33, subtask/34, subtask/35, subtask/36, subtask/37, subtask/38, subtask/39, subtask/4, subtask/40, subtask/41, subtask/42, subtask/43, subtask/44, subtask/45, subtask/46, subtask/47, subtask/48, subtask/49, subtask/5, subtask/50, subtask/51, subtask/52, subtask/53, subtask/54, subtask/55, subtask/56, subtask/6, subtask/7, subtask/8, subtask/9
Subtask4 subtask/1, subtask/10, subtask/11, subtask/12, subtask/13, subtask/14, subtask/15, subtask/16, subtask/17, subtask/18, subtask/19, subtask/2, subtask/20, subtask/21, subtask/22, subtask/23, subtask/24, subtask/25, subtask/26, subtask/27, subtask/28, subtask/29, subtask/3, subtask/30, subtask/31, subtask/32, subtask/33, subtask/34, subtask/35, subtask/36, subtask/37, subtask/38, subtask/39, subtask/4, subtask/40, subtask/41, subtask/42, subtask/43, subtask/44, subtask/45, subtask/46, subtask/47, subtask/48, subtask/49, subtask/5, subtask/50, subtask/51, subtask/52, subtask/53, subtask/54, subtask/55, subtask/56, subtask/6, subtask/7, subtask/8, subtask/9
Subtask5 subtask/1, subtask/10, subtask/11, subtask/12, subtask/13, subtask/14, subtask/15, subtask/16, subtask/17, subtask/18, subtask/19, subtask/2, subtask/20, subtask/21, subtask/22, subtask/23, subtask/24, subtask/25, subtask/26, subtask/27, subtask/28, subtask/29, subtask/3, subtask/30, subtask/31, subtask/32, subtask/33, subtask/34, subtask/35, subtask/36, subtask/37, subtask/38, subtask/39, subtask/4, subtask/40, subtask/41, subtask/42, subtask/43, subtask/44, subtask/45, subtask/46, subtask/47, subtask/48, subtask/49, subtask/5, subtask/50, subtask/51, subtask/52, subtask/53, subtask/54, subtask/55, subtask/56, subtask/6, subtask/7, subtask/8, subtask/9
Case Name Status Exec Time Memory
subtask/1 AC 311 ms 19316 KB
subtask/10 AC 327 ms 19400 KB
subtask/11 AC 304 ms 19404 KB
subtask/12 AC 326 ms 19404 KB
subtask/13 AC 335 ms 19400 KB
subtask/14 AC 333 ms 19408 KB
subtask/15 AC 325 ms 19400 KB
subtask/16 AC 347 ms 19400 KB
subtask/17 AC 332 ms 19408 KB
subtask/18 AC 337 ms 19288 KB
subtask/19 AC 329 ms 19404 KB
subtask/2 AC 318 ms 19416 KB
subtask/20 AC 340 ms 19300 KB
subtask/21 AC 74 ms 17420 KB
subtask/22 AC 43 ms 8644 KB
subtask/23 AC 78 ms 17400 KB
subtask/24 AC 42 ms 8776 KB
subtask/25 AC 349 ms 19412 KB
subtask/26 AC 61 ms 9744 KB
subtask/27 AC 253 ms 18384 KB
subtask/28 AC 301 ms 19128 KB
subtask/29 AC 235 ms 15900 KB
subtask/3 AC 330 ms 19392 KB
subtask/30 AC 183 ms 16236 KB
subtask/31 AC 186 ms 15864 KB
subtask/32 AC 79 ms 17468 KB
subtask/33 AC 82 ms 17468 KB
subtask/34 AC 50 ms 8880 KB
subtask/35 AC 51 ms 8872 KB
subtask/36 AC 53 ms 8944 KB
subtask/37 AC 50 ms 8912 KB
subtask/38 AC 40 ms 8612 KB
subtask/39 AC 41 ms 8748 KB
subtask/4 AC 341 ms 19408 KB
subtask/40 AC 41 ms 8584 KB
subtask/41 AC 40 ms 8736 KB
subtask/42 AC 304 ms 19296 KB
subtask/43 AC 325 ms 19404 KB
subtask/44 AC 335 ms 19404 KB
subtask/45 AC 339 ms 19400 KB
subtask/46 AC 326 ms 19404 KB
subtask/47 AC 340 ms 19416 KB
subtask/48 AC 354 ms 19412 KB
subtask/49 AC 355 ms 19404 KB
subtask/5 AC 330 ms 19304 KB
subtask/50 AC 350 ms 19404 KB
subtask/51 AC 351 ms 19316 KB
subtask/52 AC 319 ms 19412 KB
subtask/53 AC 331 ms 19416 KB
subtask/54 AC 347 ms 19416 KB
subtask/55 AC 338 ms 19420 KB
subtask/56 AC 327 ms 19408 KB
subtask/6 AC 337 ms 19408 KB
subtask/7 AC 302 ms 19408 KB
subtask/8 AC 326 ms 19408 KB
subtask/9 AC 364 ms 19408 KB