Submission #2518927
Source Code Expand
#include "maze.h" #include "grader.h" #include <iostream> #include <deque> #include <map> using namespace std; #define MAX(X,Y) ((X)>(Y)?(X):(Y)) int defx(int dx,int dy){ int left=0,right=500; bool f; while(right-left>1){ f=query(-2*((right+left)/2)+dx,dy); if(f) right=(right+left)/2; else left=(right+left)/2; } return left*2+1; } int defy(int dx,int dy){ int left=0,right=500; bool f; while(right-left>1){ f=query(dx,-2*((right+left)/2)+dy); if(f) right=(right+left)/2; else left=(right+left)/2; } return left*2+1; } void taro(int W, int H, int M[1000][1000]) { for(int i=2;i<W-1;i+=2) for(int j=1;j<H;j+=2){ send(M[j][i]); } for(int i=1;i<W;i+=2) for(int j=2;j<H-1;j+=2){ send(M[j][i]); } int x,y,buf[4],tem; buf[0]=query(0,-1); buf[1]=query(1,0); buf[2]=query(0,1); buf[3]=query(-1,0); x=defx(0,0); y=defy(0,0); if(!buf[0]||!buf[2]){ tem=defx(0,1); x=MAX(x,tem); tem=defy(0,1); y=MAX(y,tem-1); } if(!buf[1]||!buf[3]){ tem=defx(1,0); x=MAX(x,tem-1); tem=defy(1,0); y=MAX(y,tem); } for(int i=0;i<10;i++){ send(x%2); x/=2; send(y%2); y/=2; } } int chizu[1000][1000]; int dis[1000][1000]; int jiro(int W, int H, int S, int X[]) { for(int j=0;j<H;j++) chizu[j][0]=chizu[j][W-1]=1; for(int i=0;i<W;i++) chizu[0][i]=chizu[H-1][i]=1; for(int i=1;i<W;i+=2) for(int j=1;j<H;j+=2){ chizu[j][i]=0; } for(int i=2;i<W;i+=2) for(int j=2;j<H;j+=2){ chizu[j][i]=1; } int call=0; for(int i=2;i<W-1;i+=2) for(int j=1;j<H;j+=2) chizu[j][i]=X[call++]; for(int i=1;i<W;i+=2) for(int j=2;j<H-1;j+=2) chizu[j][i]=X[call++]; int ax=0,ay=0,bx=0,by=0,pro=1; for(int i=0;i<10;i++){ ax+=pro*X[call++]; ay+=pro*X[call++]; pro*=2; } /* for(int j=0;j<H;j++){ for(int i=0;i<W;i++){ cout<<chizu[j][i]; } cout<<endl; }*/ int buf[4],tem; buf[0]=query(0,-1); buf[1]=query(1,0); buf[2]=query(0,1); buf[3]=query(-1,0); bx=defx(0,0); by=defy(0,0); if(!buf[0]||!buf[2]){ tem=defx(0,1); bx=MAX(bx,tem); tem=defy(0,1); by=MAX(by,tem-1); } if(!buf[1]||!buf[3]){ tem=defx(1,0); bx=MAX(bx,tem-1); tem=defy(1,0); by=MAX(by,tem); } for(int i=0;i<W;i++) for(int j=0;j<H;j++){ dis[j][i]=-1; } deque<pair<int,int> > que; pair<int,int> p; p.first=bx;p.second=by; que.push_back(p); dis[by][bx]=0; int x,y; while(que.size()!=0){ p=que.front(); que.pop_front(); x=p.first; y=p.second; if(chizu[y][x+1]==0&&dis[y][x+1]==-1){ dis[y][x+1]=dis[y][x]+1; que.push_back(pair<int,int>(x+1,y)); } if(chizu[y][x-1]==0&&dis[y][x-1]==-1){ dis[y][x-1]=dis[y][x]+1; que.push_back(pair<int,int>(x-1,y)); } if(chizu[y+1][x]==0&&dis[y+1][x]==-1){ dis[y+1][x]=dis[y][x]+1; que.push_back(pair<int,int>(x,y+1)); } if(chizu[y-1][x]==0&&dis[y-1][x]==-1){ dis[y-1][x]=dis[y][x]+1; que.push_back(pair<int,int>(x,y-1)); } } return dis[ay][ax]; }
Submission Info
Submission Time | |
---|---|
Task | B - にひきのきつね と くらがりのめいろ (Two Foxes and the Dark Maze) |
User | luogu_bot5 |
Language | C++ (GCC 5.4.1) |
Score | 0 |
Code Size | 3087 Byte |
Status | CE |
Compile Error
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol ...