| 提出番号 | 1313 |
|---|---|
| 提出者 | callsnote |
| 言語 | C++ |
| 提出日時 | 2018-06-21 12:49:00 |
| 問題名 | (62)SuperCon2018(独自テスト) |
| 結果 | AC |
| 点数 | 570000 |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 90000 | 101ms | 23632KB |
| 2 | AC | 90000 | 99ms | 22928KB |
| 3 | AC | 80000 | 84ms | 22512KB |
| 4 | AC | 90000 | 99ms | 22928KB |
| 5 | AC | 90000 | 98ms | 22288KB |
| 6 | AC | 80000 | 86ms | 20816KB |
| 7 | AC | 70000 | 81ms | 20816KB |
| 8 | AC | 90000 | 100ms | 23376KB |
| 9 | AC | 90000 | 100ms | 22752KB |
| 10 | AC | 80000 | 83ms | 21872KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 11 | AC | 50000 | 59ms | 18704KB |
| 12 | AC | 90000 | 99ms | 22928KB |
| 13 | AC | 50000 | 54ms | 16976KB |
| 14 | AC | 60000 | 69ms | 20816KB |
| 15 | AC | 80000 | 84ms | 21872KB |
| 16 | AC | 90000 | 99ms | 22928KB |
| 17 | AC | 70000 | 79ms | 21024KB |
| 18 | AC | 80000 | 88ms | 23008KB |
| 19 | AC | 80000 | 87ms | 22928KB |
| 20 | AC | 60000 | 73ms | 19760KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 21 | AC | 80000 | 89ms | 20816KB |
| 22 | AC | 70000 | 78ms | 20144KB |
| 23 | AC | 30000 | 37ms | 14480KB |
| 24 | AC | 60000 | 62ms | 19136KB |
| 25 | AC | 80000 | 86ms | 20816KB |
| 26 | AC | 70000 | 81ms | 20816KB |
| 27 | AC | 90000 | 97ms | 21872KB |
| 28 | AC | 60000 | 72ms | 19760KB |
| 29 | AC | 60000 | 67ms | 17648KB |
| 30 | AC | 90000 | 98ms | 22928KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 31 | AC | 30000 | 40ms | 15536KB |
| 32 | AC | 80000 | 93ms | 22544KB |
| 33 | AC | 70000 | 74ms | 20816KB |
| 34 | AC | 40000 | 50ms | 16592KB |
| 35 | AC | 60000 | 65ms | 18704KB |
| 36 | AC | 80000 | 84ms | 20672KB |
| 37 | AC | 60000 | 70ms | 20816KB |
| 38 | AC | 70000 | 79ms | 20320KB |
| 39 | AC | 70000 | 80ms | 19760KB |
| 40 | AC | 80000 | 86ms | 21872KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 41 | AC | 80000 | 97ms | 22832KB |
| 42 | AC | 40000 | 55ms | 16944KB |
| 43 | AC | 60000 | 71ms | 18704KB |
| 44 | AC | 50000 | 54ms | 17536KB |
| 45 | AC | 50000 | 57ms | 18320KB |
| 46 | AC | 30000 | 40ms | 15840KB |
| 47 | AC | 70000 | 78ms | 19760KB |
| 48 | AC | 50000 | 56ms | 17648KB |
| 49 | AC | 50000 | 54ms | 16592KB |
| 50 | AC | 30000 | 37ms | 14208KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 51 | AC | 20000 | 27ms | 13424KB |
| 52 | AC | 80000 | 82ms | 20832KB |
| 53 | AC | 60000 | 70ms | 19760KB |
| 54 | AC | 60000 | 62ms | 16592KB |
| 55 | AC | 60000 | 71ms | 19344KB |
| 56 | AC | 60000 | 72ms | 18912KB |
| 57 | AC | 40000 | 53ms | 17952KB |
| 58 | AC | 40000 | 48ms | 16480KB |
| 59 | AC | 30000 | 41ms | 15008KB |
| 60 | AC | 60000 | 73ms | 20816KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 61 | AC | 40000 | 44ms | 14480KB |
| 62 | AC | 60000 | 71ms | 17648KB |
| 63 | AC | 80000 | 89ms | 20816KB |
| 64 | AC | 30000 | 38ms | 15536KB |
| 65 | AC | 40000 | 52ms | 16368KB |
| 66 | AC | 40000 | 53ms | 16592KB |
| 67 | AC | 40000 | 55ms | 16592KB |
| 68 | AC | 30000 | 35ms | 14240KB |
| 69 | AC | 20000 | 30ms | 13488KB |
| 70 | AC | 70000 | 80ms | 19888KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 71 | AC | 10000 | 19ms | 10256KB |
| 72 | AC | 70000 | 83ms | 20176KB |
| 73 | AC | 80000 | 90ms | 21872KB |
| 74 | AC | 60000 | 71ms | 19040KB |
| 75 | AC | 20000 | 23ms | 12928KB |
| 76 | AC | 20000 | 31ms | 12976KB |
| 77 | AC | 40000 | 50ms | 15536KB |
| 78 | AC | 40000 | 52ms | 16560KB |
| 79 | AC | 50000 | 54ms | 17616KB |
| 80 | AC | 70000 | 74ms | 18704KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 81 | AC | 50000 | 57ms | 16672KB |
| 82 | AC | 30000 | 42ms | 16592KB |
| 83 | AC | 50000 | 54ms | 17264KB |
| 84 | AC | 40000 | 50ms | 16176KB |
| 85 | AC | 50000 | 58ms | 18704KB |
| 86 | AC | 40000 | 42ms | 15536KB |
| 87 | AC | 40000 | 51ms | 15536KB |
| 88 | AC | 60000 | 65ms | 17648KB |
| 89 | AC | 20000 | 32ms | 15024KB |
| 90 | AC | 50000 | 61ms | 16592KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 91 | AC | 50000 | 56ms | 16720KB |
| 92 | AC | 50000 | 56ms | 16592KB |
| 93 | AC | 60000 | 70ms | 18208KB |
| 94 | AC | 40000 | 46ms | 14480KB |
| 95 | AC | 20000 | 27ms | 13936KB |
| 96 | AC | 80000 | 95ms | 21872KB |
| 97 | AC | 50000 | 61ms | 17648KB |
| 98 | AC | 10000 | 16ms | 11168KB |
| 99 | AC | 70000 | 79ms | 19760KB |
| 100 | AC | 60000 | 62ms | 16592KB |
#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;
}
Route route;
collect_routes(scN, scN, 0, route);
int acc = combine_routes();
scOutput(acc);
}