| 提出番号 | 1309 |
|---|---|
| 提出者 | callsnote |
| 言語 | C++ |
| 提出日時 | 2018-06-21 00:09:17 |
| 問題名 | (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 <stdlib.h>
#include <vector>
using namespace std;
#define MAX_N 20
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);
}