結果

提出番号 1292
提出者 HIBIKU
言語 C++
提出日時 2018-06-20 22:00:54
問題名 (62)SuperCon2018(独自テスト)
結果 AC
点数 2831000

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 380000 389ms 8288KB
2 AC 430000 440ms 8048KB
3 AC 370000 376ms 7792KB
4 AC 430000 439ms 8400KB
5 AC 430000 437ms 8000KB
6 AC 370000 376ms 7808KB
7 AC 330000 340ms 7248KB
8 AC 440000 449ms 8096KB
9 AC 380000 390ms 8720KB
10 AC 360000 366ms 8352KB
テストケース 結果 得点 実行時間 メモリ使用量
11 AC 250000 257ms 8224KB
12 AC 430000 440ms 8416KB
13 AC 210000 220ms 8400KB
14 AC 350000 355ms 8000KB
15 AC 420000 433ms 7520KB
16 AC 380000 382ms 7488KB
17 AC 290000 297ms 8400KB
18 AC 440000 445ms 8048KB
19 AC 440000 445ms 8384KB
20 AC 300000 311ms 7600KB
テストケース 結果 得点 実行時間 メモリ使用量
21 AC 390000 397ms 8016KB
22 AC 330000 337ms 7952KB
23 AC 180000 191ms 7952KB
24 AC 300000 307ms 8432KB
25 AC 330000 341ms 8096KB
26 AC 340000 353ms 8096KB
27 AC 440000 450ms 8016KB
28 AC 260000 272ms 7888KB
29 AC 260000 272ms 8192KB
30 AC 430000 437ms 8192KB
テストケース 結果 得点 実行時間 メモリ使用量
31 AC 190000 197ms 7216KB
32 AC 400000 413ms 8384KB
33 AC 370000 374ms 7952KB
34 AC 200000 204ms 8720KB
35 AC 270000 277ms 7536KB
36 AC 360000 369ms 8384KB
37 AC 350000 356ms 8064KB
38 AC 340000 353ms 7824KB
39 AC 330000 339ms 8400KB
40 AC 420000 422ms 8384KB
テストケース 結果 得点 実行時間 メモリ使用量
41 AC 420000 431ms 7536KB
42 AC 190000 195ms 7808KB
43 AC 260000 269ms 8224KB
44 AC 220000 232ms 8672KB
45 AC 260000 270ms 7216KB
46 AC 200000 208ms 7248KB
47 AC 360000 362ms 8064KB
48 AC 260000 268ms 7520KB
49 AC 230000 235ms 7840KB
50 AC 140000 146ms 8368KB
テストケース 結果 得点 実行時間 メモリ使用量
51 AC 120000 130ms 7520KB
52 AC 360000 365ms 7920KB
53 AC 350000 360ms 8432KB
54 AC 220000 227ms 7824KB
55 AC 300000 302ms 8416KB
56 AC 310000 316ms 8368KB
57 AC 220000 233ms 8256KB
58 AC 210000 216ms 8704KB
59 AC 190000 201ms 7504KB
60 AC 370000 380ms 7248KB
テストケース 結果 得点 実行時間 メモリ使用量
61 AC 170000 178ms 7232KB
62 AC 290000 298ms 8240KB
63 AC 390000 396ms 8448KB
64 AC 200000 207ms 8704KB
65 AC 220000 229ms 8192KB
66 AC 180000 189ms 7552KB
67 AC 240000 250ms 8416KB
68 AC 140000 146ms 8672KB
69 AC 150000 156ms 8432KB
70 AC 340000 348ms 7920KB
テストケース 結果 得点 実行時間 メモリ使用量
71 AC 80000 91ms 8416KB
72 AC 370000 375ms 7936KB
73 AC 400000 406ms 8400KB
74 AC 280000 288ms 7808KB
75 AC 140000 152ms 7984KB
76 AC 120000 127ms 8432KB
77 AC 220000 232ms 8400KB
78 AC 200000 214ms 8432KB
79 AC 220000 223ms 8416KB
80 AC 320000 330ms 8448KB
テストケース 結果 得点 実行時間 メモリ使用量
81 AC 200000 211ms 7792KB
82 AC 190000 197ms 8064KB
83 AC 250000 256ms 8432KB
84 AC 200000 211ms 8016KB
85 AC 240000 250ms 8720KB
86 AC 170000 173ms 8416KB
87 AC 230000 236ms 8432KB
88 AC 260000 263ms 7808KB
89 AC 120000 131ms 8672KB
90 AC 270000 274ms 7920KB
テストケース 結果 得点 実行時間 メモリ使用量
91 AC 230000 240ms 7232KB
92 AC 220000 233ms 8416KB
93 AC 300000 305ms 8144KB
94 AC 180000 191ms 8112KB
95 AC 160000 173ms 7984KB
96 AC 420000 426ms 8432KB
97 AC 250000 259ms 8432KB
98 AC 90000 97ms 8416KB
99 AC 340000 348ms 7936KB
100 AC 260000 262ms 7792KB

ソースコード

#include<stdio.h>
#include<time.h>

int scN,scM;
int scB[2][10];
clock_t scStartTime,scEndTime;
void scInput(){
	int i;
	scanf("%d%d",&scN,&scM);
	for(i=0;i<scM;++i){scanf("%d%d",&scB[0][i],&scB[1][i]);}
	scStartTime=clock();
}
void scOutput(int s){
	scEndTime=clock();
	printf("Ans= %d, time=%d\n",s,(int)(scEndTime-scStartTime));
}

#include <stdlib.h>
#include <math.h>
#include <algorithm>
using namespace std;
int ans=0;
int vx[4] = { 1,0,-1,0 }, vy[4] = { 0,1,0,-1 };
void dfs(int n, bool f[100][100], int x, int y){
	if(n>=scN){
		if(x==50&&y==50){
			ans++;
		}
		return;
	}
	if (n > scN / 2 && n < scN) {
		if (abs(50 - x) + abs(50 - y) > scN - n) return;
	}
	
	for(int i=0;i<4;i++){
		int nx = x + vx[i], ny = y + vy[i];
		if(!f[nx][ny]&&!(nx==50&&ny==50&&n==scN-1)) continue;
		if (n == scN - 1 && (nx != 50 || ny != 50)) continue;
		f[nx][ny]=false;
		dfs(n+1,f,nx,ny);
		f[nx][ny]=true;
		f[50][50] = false;
	}
}	

int main(){
	scInput();
	bool f[100][100];
	for (int i = 0; i < 100; i++) {
		for (int j = 0; j < 100; j++) {
			f[i][j] = true;
		}
	}
	for (int i = 0; i < scM; i++) {
		int sx=scB[0][i]+50;
		int sy=scB[1][i]+50;
		if(0<=sx&&sx<100&&0<=sy&&sy<100) f[sx][sy] = false;
	}
	f[50][50]=false;
	dfs(0,f,50,50);
	scOutput(ans);
	return 0;
}