QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#24152 | #2615. Surround the Cat | galaxias | WA | 5ms | 3572kb | C++11 | 3.5kb | 2022-03-26 18:11:11 | 2022-04-30 05:08:50 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
int dx[] = {0,1,-1,0,1,-1};
int dy[] = {1,0,0,-1,1,-1};
int ddx[] = {1,2,1,-1,-2,-1};
int ddy[] = {-1,1,2,1,-1,-2};
map<pair<int,int>, int> mp;
bool isedge(int x, int y) {
if(x == 8) {
for(int i=0;i<=8;i++) {
if(y == i) return true;
}
}
if(y == 8) {
for(int i=0;i<=8;i++) {
if(x == i) return true;
}
}
for(int i=0;i<=8;i++) {
if(x == 0-i && y == 8-i) return true;
}
for(int i=0;i<=8;i++) {
if(x == 0+i && y == -8+i) return true;
}
if(x == -8) {
for(int i=0;i<=8;i++) {
if(y == -i) return true;
}
}
if(y == -8) {
for(int i=-8;i<=0;i++) {
if(x == i) return true;
}
}
return false;
}
bool dfs1(int x, int y) {
for(int i=0;i<6;i++) {
int xx = x+dx[i];
int yy = y+dy[i];
if(isedge(xx,yy)) return true;
}
return false;
}
bool dfs2(int x, int y) {
for(int i=0;i<6;i++) {
int xx = x+dx[i];
int yy = y+dy[i];
if(dfs1(xx,yy)) return true;
}
return false;
}
pair<int,int> findvis() {
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(8,i))) return make_pair(8,i);
}
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(i,8))) return make_pair(i,8);
}
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(0-i,8-i))) return make_pair(0-i,8-i);
}
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(-8,-i))) return make_pair(-8,-i);
}
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(-8+i,-8))) return make_pair(-8+i,-8);
}
for(int i=0;i<=8;i++) {
if(!mp.count(make_pair(0+i,-8+i))) return make_pair(0+i,-8+i);
}
}
pair<int,int> query(int x, int y) {
cout << x << " " << y << endl;
cout.flush();
mp[make_pair(x,y)] = 1;
int xx,yy;
cin >> xx >> yy;
return make_pair(xx,yy);
}
signed main() {
int qw, wq;
pair<int,int> cur;
cin >> wq >> qw;
query(8,1);
query(7,8);
query(-1,8);
query(-8,-1);
query(-7,-8);
cur = query(1,-8);
for(int i=0;i<42;i++) {
if(dfs1(cur.first,cur.second)) {
int ok = 0;
for(int i=0;i<6;i++) {
int xx = cur.first+dx[i];
int yy = cur.second+dy[i];
if(isedge(xx,yy) && !mp.count(make_pair(xx,yy))) {
cur = query(xx,yy);
ok=1;
break;
}
}
if(!ok) {
int okk = 0;
for(int i=0;i<6;i++) {
int xx = cur.first+ddx[i];
int yy = cur.second+ddy[i];
if(isedge(xx,yy) && !mp.count(make_pair(xx,yy))) {
cur = query(xx,yy);
okk=1;
break;
}
}
if(!okk) {
pair<int,int> tmp = findvis();
cur = query(tmp.first,tmp.second);
}
}
}else if(dfs2(cur.first,cur.second)) {
int ok = 0;
for(int i=0;i<6;i++) {
int xx = cur.first+ddx[i];
int yy = cur.second+ddy[i];
if(xx == 8 && yy == 0) continue;
if(xx == 8 && yy == 8) continue;
if(xx == 0 && yy == 8) continue;
if(xx == -8 && yy == 0) continue;
if(xx == -8 && yy == -8) continue;
if(xx == 0 && yy == -8) continue;
if(isedge(xx,yy) && !mp.count(make_pair(xx,yy))) {
cur = query(xx,yy);
ok=1;
break;
}
}
if(!ok) {
pair<int,int> tmp = findvis();
cur = query(tmp.first,tmp.second);
}
}else {
pair<int,int> tmp = findvis();
cur = query(tmp.first,tmp.second);
}
}
}
/*
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
*/
详细
Test #1:
score: 0
Wrong Answer
time: 5ms
memory: 3572kb
input:
0 0 1 0 2 1 3 2 4 3 5 4 6 5 7 6 7 7 6 7 5 7 6 7 5 7 6 7 5 7 6 7 7 7 6 7 7 7 6 7 5 7 6 7 7 7 7 6 7 7 7 6 7 5 7 6 7 7 7 6 7 7 7 6 7 7 6 7 7 7 6 7 5 7 6 7 7 7 6 7 7 7 7 6 7 7 6 7 5 7 6 7 7 7 6 7 5 7
output:
8 1 7 8 -1 8 -8 -1 -7 -8 1 -8 8 6 8 7 8 8 6 8 5 8 8 0 4 8 8 2 8 3 8 4 8 5 0 8 1 8 2 8 3 8 -1 7 -2 6 -3 5 -4 4 -5 3 -6 2 -7 1 -8 0 -8 -2 -8 -3 -8 -4 -8 -5 -8 -6 -8 -7 -8 -8 -6 -8 -5 -8 -4 -8 -3 -8 -2 -8 -1 -8 0 -8 1 -7 2 -6 3 -5 4 -4 5 -3
result:
wrong answer wrong output format Unexpected end of file - int32 expected