結果

提出番号 1308
提出者 callsnote
言語 C++
提出日時 2018-06-21 00:04:50
問題名 (62)SuperCon2018(独自テスト)
結果 CE
点数 0

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 CE 0 0ms 0KB
2 CE 0 0ms 0KB
3 CE 0 0ms 0KB
4 CE 0 0ms 0KB
5 CE 0 0ms 0KB
6 CE 0 0ms 0KB
7 CE 0 0ms 0KB
8 CE 0 0ms 0KB
9 CE 0 0ms 0KB
10 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
11 CE 0 0ms 0KB
12 CE 0 0ms 0KB
13 CE 0 0ms 0KB
14 CE 0 0ms 0KB
15 CE 0 0ms 0KB
16 CE 0 0ms 0KB
17 CE 0 0ms 0KB
18 CE 0 0ms 0KB
19 CE 0 0ms 0KB
20 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
21 CE 0 0ms 0KB
22 CE 0 0ms 0KB
23 CE 0 0ms 0KB
24 CE 0 0ms 0KB
25 CE 0 0ms 0KB
26 CE 0 0ms 0KB
27 CE 0 0ms 0KB
28 CE 0 0ms 0KB
29 CE 0 0ms 0KB
30 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
31 CE 0 0ms 0KB
32 CE 0 0ms 0KB
33 CE 0 0ms 0KB
34 CE 0 0ms 0KB
35 CE 0 0ms 0KB
36 CE 0 0ms 0KB
37 CE 0 0ms 0KB
38 CE 0 0ms 0KB
39 CE 0 0ms 0KB
40 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
41 CE 0 0ms 0KB
42 CE 0 0ms 0KB
43 CE 0 0ms 0KB
44 CE 0 0ms 0KB
45 CE 0 0ms 0KB
46 CE 0 0ms 0KB
47 CE 0 0ms 0KB
48 CE 0 0ms 0KB
49 CE 0 0ms 0KB
50 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
51 CE 0 0ms 0KB
52 CE 0 0ms 0KB
53 CE 0 0ms 0KB
54 CE 0 0ms 0KB
55 CE 0 0ms 0KB
56 CE 0 0ms 0KB
57 CE 0 0ms 0KB
58 CE 0 0ms 0KB
59 CE 0 0ms 0KB
60 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
61 CE 0 0ms 0KB
62 CE 0 0ms 0KB
63 CE 0 0ms 0KB
64 CE 0 0ms 0KB
65 CE 0 0ms 0KB
66 CE 0 0ms 0KB
67 CE 0 0ms 0KB
68 CE 0 0ms 0KB
69 CE 0 0ms 0KB
70 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
71 CE 0 0ms 0KB
72 CE 0 0ms 0KB
73 CE 0 0ms 0KB
74 CE 0 0ms 0KB
75 CE 0 0ms 0KB
76 CE 0 0ms 0KB
77 CE 0 0ms 0KB
78 CE 0 0ms 0KB
79 CE 0 0ms 0KB
80 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
81 CE 0 0ms 0KB
82 CE 0 0ms 0KB
83 CE 0 0ms 0KB
84 CE 0 0ms 0KB
85 CE 0 0ms 0KB
86 CE 0 0ms 0KB
87 CE 0 0ms 0KB
88 CE 0 0ms 0KB
89 CE 0 0ms 0KB
90 CE 0 0ms 0KB
テストケース 結果 得点 実行時間 メモリ使用量
91 CE 0 0ms 0KB
92 CE 0 0ms 0KB
93 CE 0 0ms 0KB
94 CE 0 0ms 0KB
95 CE 0 0ms 0KB
96 CE 0 0ms 0KB
97 CE 0 0ms 0KB
98 CE 0 0ms 0KB
99 CE 0 0ms 0KB
100 CE 0 0ms 0KB

ソースコード

#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));
}
// sc1.h

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

//
// Implementation
//

#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <cmath>
using namespace std;

#define MAX_N 20
#define BIT_N (MAX_N*2*MAX_N*2)

bool path[MAX_N*2][MAX_N*2];
bool trap[MAX_N*2][MAX_N*2];

struct Point {
  int x;
  int y;
};
struct Route {
  Point p[10];
};

vector<Route> routemap[MAX_N*2][MAX_N*2];

void collect_routes(int x, int y, int len, Route route) {
  if (abs((x-scN)*(x-scN))+abs((y-scN)*(y-scN)) > (scN-len)*(scN-len)) return;
  if (path[y][x]) return;
  if (trap[y][x]) return;
  if (len == scN/2) {
    routemap[y][x].push_back(route);
    return;
  }

  path[y][x] = true;
  route.p[len] = (Point){x, y};
  collect_routes(x+1, y, len+1, route);
  collect_routes(x-1, y, len+1, route);
  collect_routes(x, y+1, len+1, route);
  collect_routes(x, y-1, len+1, route);
  path[y][x] = false;
}

bool is_duplicate(bool visited[MAX_N*2][MAX_N*2], Route b) {
  for (int i=1; i<scN/2; i++) {
    if (visited[b.p[i].y][b.p[i].x]) return true;
  }
  return false;
}

int combine_routes() {
  int acc = 0;
  for (int y=scN/2; y<=scN+scN/2; y++) {
    for (int x=scN/2; x<=scN+scN/2; x++) {
      vector<Route> routes = routemap[y][x];
      rep(i, routes.size()) {
        bool visited[MAX_N*2][MAX_N*2] = {};
        for (int j=1; j<scN/2; j++) {
          visited[routes[i].p[j].y][routes[i].p[j].x] = true;
        }
        for (int j=i+1; j<routes.size(); j++) {
          if (is_duplicate(visited, routes[j])) continue;
          acc++;
        }
      }
    }
  }
  return acc*2;
}

int main() {
  scInput();

  rep(i, scM) {
    int x = scB[0][i];
    int y = scB[1][i];
    if (x+scN < 0 || y+scN < 0 || x+scN >= MAX_N*2 || y+scN >= MAX_N*2) continue;
    trap[x+scN][y+scN] = true;
  }
  collect_routes(scN, scN, 0, (Route){});
  int acc = combine_routes();
  scOutput(acc);
}