Submission #205140


Source Code Expand

#include "maze.h"
#include "grader.h"
#include <cstdio>
using namespace std;
#define rep(i,n) for(int i = 0; i < n; ++i)
const int dx[] = {-1,0,1,0,0};
const int dy[] = {0,-1,0,1,0};

int dir[1000][1000];
void dfs(int i, int j, int v, int M[1000][1000]) {
	dir[i][j] = v;
	rep(u,4) {
		if (v == u || M[i+dx[u]][j+dy[u]]) continue;
		dfs(i+dx[u]*2,j+dy[u]*2,u^2,M);
	}
}

int sch(int v, int u, int ma){
	int l = 0, r = ma, c;
	while (l+1<r) {
		c = l+r>>1;
		if (query(dy[v]*c*2+dy[u],dx[v]*c*2+dx[u])) r = c; else l = c;
	}
	return l;
}
void get(int& x, int& y, int W, int H) {
	int lx, ly, rx, ry;
	int dv = 4;
	lx = sch(0,dv,H/2);
	rx = sch(2,dv,H/2);
	if (lx+rx != H/2-1) {
		rep(v,4){
			if (query(dy[v],dx[v]) == 0) {
				dv = v;
				break;
			}
		}
		lx = sch(0,dv,H/2);
		rx = sch(2,dv,H/2);
	}
	ly = sch(1,dv,W/2);
	ry = sch(3,dv,W/2);
	if (ly+ry != W/2-1) {
		rep(v,4){
			if (query(dy[v],dx[v]) == 0) {
				dv = v;
				break;
			}
		}
		ly = sch(1,dv,W/2);
		ry = sch(3,dv,W/2);
	}
	x = lx*2+1-dx[dv];
	y = ly*2+1-dy[dv];
}

void taro(int W, int H, int M[1000][1000]) {
	dfs(1,1,100,M);
	for(int i = 1; i <= H-2; i += 2) {
		for(int j = 1; j <= W-2; j += 2) {
			if (i == 1 && j == 1) continue;
			send(dir[i][j]>>1);
			send(dir[i][j]&1);
		}
	}
	int x, y;
	get(x,y,W,H);
	rep(i,9){ send(x&1); x>>=1;}
	rep(i,9){ send(y&1); y>>=1;}
}

int m[1000][1000];
int dist(int i, int j, int v, int x, int y, int M[1000][1000]){
	if (i == x && j == y) return 0;
	rep(u,4) {
		if (v == u || M[i+dx[u]][j+dy[u]]) continue;
		int res = dist(i+dx[u],j+dy[u],u^2,x,y,M);
		if (res != -1) return res+1;
	}
	return -1;
}
int jiro(int W, int H, int S, int X[]) {
	int cur = 0;
	rep(i,H)rep(j,W) m[i][j] = ((i%2&&j%2)?0:1);
	for(int i = 1; i <= H-2; i += 2) {
		for(int j = 1; j <= W-2; j += 2) {
			if (i == 1 && j == 1) continue;
			int v = X[cur++]<<1 | X[cur++];
			m[i+dx[v]][j+dy[v]] = 0;
		}
	}
	int sx = 0, sy = 0;
	cur = S;
	rep(i,9) sy = sy<<1 | X[--cur];
	rep(i,9) sx = sx<<1 | X[--cur];
	int x, y;
	get(x,y,W,H);
	return dist(sx, sy, -1, x, y, m);
}

Submission Info

Submission Time
Task B - にひきのきつね と くらがりのめいろ (Two Foxes and the Dark Maze)
User snuke
Language IOI-Style C++ (GCC 5.4.1)
Score 0
Code Size 2152 Byte
Status WA
Exec Time 424 ms
Memory 33296 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4 Subtask5
Score / Max Score 0 / 13 0 / 11 0 / 21 0 / 21 0 / 34
Status
AC × 2
WA × 1
RE × 53
AC × 2
WA × 1
RE × 53
AC × 2
WA × 1
RE × 53
AC × 2
WA × 1
RE × 53
AC × 2
WA × 1
RE × 53
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 RE 324 ms 33288 KB
subtask/10 RE 397 ms 33292 KB
subtask/11 RE 385 ms 33292 KB
subtask/12 RE 409 ms 33288 KB
subtask/13 RE 349 ms 17804 KB
subtask/14 RE 385 ms 17800 KB
subtask/15 RE 361 ms 17804 KB
subtask/16 RE 407 ms 17668 KB
subtask/17 RE 358 ms 17804 KB
subtask/18 RE 376 ms 17800 KB
subtask/19 RE 374 ms 17804 KB
subtask/2 RE 292 ms 33292 KB
subtask/20 RE 364 ms 17800 KB
subtask/21 AC 72 ms 17536 KB
subtask/22 RE 153 ms 1244 KB
subtask/23 RE 182 ms 11908 KB
subtask/24 RE 32 ms 1300 KB
subtask/25 RE 372 ms 18064 KB
subtask/26 RE 178 ms 2756 KB
subtask/27 RE 300 ms 15492 KB
subtask/28 RE 370 ms 21508 KB
subtask/29 RE 302 ms 12504 KB
subtask/3 RE 249 ms 17804 KB
subtask/30 RE 273 ms 11908 KB
subtask/31 RE 261 ms 14216 KB
subtask/32 RE 182 ms 12436 KB
subtask/33 RE 179 ms 12428 KB
subtask/34 RE 157 ms 1600 KB
subtask/35 RE 184 ms 1684 KB
subtask/36 RE 164 ms 1552 KB
subtask/37 RE 159 ms 1676 KB
subtask/38 AC 66 ms 8716 KB
subtask/39 RE 146 ms 1276 KB
subtask/4 RE 424 ms 17800 KB
subtask/40 RE 164 ms 1244 KB
subtask/41 RE 35 ms 1232 KB
subtask/42 RE 388 ms 33296 KB
subtask/43 RE 392 ms 33292 KB
subtask/44 RE 382 ms 17804 KB
subtask/45 RE 371 ms 17804 KB
subtask/46 RE 344 ms 17800 KB
subtask/47 RE 362 ms 17808 KB
subtask/48 RE 245 ms 17936 KB
subtask/49 RE 374 ms 17932 KB
subtask/5 RE 358 ms 17804 KB
subtask/50 RE 372 ms 17928 KB
subtask/51 RE 380 ms 17928 KB
subtask/52 WA 277 ms 23180 KB
subtask/53 RE 383 ms 18056 KB
subtask/54 RE 398 ms 17928 KB
subtask/55 RE 419 ms 18184 KB
subtask/56 RE 262 ms 22796 KB
subtask/6 RE 237 ms 17680 KB
subtask/7 RE 377 ms 33292 KB
subtask/8 RE 413 ms 33288 KB
subtask/9 RE 393 ms 33276 KB