結果
問題 | No.331 CodeRunnerでやれ |
ユーザー |
![]() |
提出日時 | 2015-12-24 00:58:48 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
TLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 3,018 bytes |
コンパイル時間 | 1,826 ms |
コンパイル使用メモリ | 175,156 KB |
実行使用メモリ | 79,208 KB |
平均クエリ数 | 0.06 |
最終ジャッジ日時 | 2024-07-16 22:27:26 |
合計ジャッジ時間 | 8,841 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | TLE * 1 |
other | AC * 1 -- * 15 |
ソースコード
#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef vector<int> vi;typedef vector<ll> vl;typedef complex<double> P;typedef pair<int,int> pii;#define REP(i,n) for(ll i=0;i<n;++i)#define REPR(i,n) for(ll i=1;i<n;++i)#define FOR(i,a,b) for(ll i=a;i<b;++i)#define DEBUG(x) cout<<#x<<": "<<x<<endl#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl#define ALL(a) (a).begin(),(a).end()#define MOD (ll)(1e9+7)#define ADD(a,b) a=((a)+(b))%MOD#define FIX(a) ((a)%MOD+MOD)%MODint G[100][100];int visited[100][100];int main(){int px = 50, py = 50;int dir = 0;int dx[4] = {1,0,-1,0};int dy[4] = {0,1,0,-1};REP(i,100)REP(j,100)G[i][j]=-1;// -1 : unknown// 0 : none// 1 : wall// 訪れていない場所があったらそっちへ行く方針// 場所を訪れて、訪れたことが無かったら1周してデータを集めるwhile(true){string s;cin>>s;if(s=="Merry")break;if(s=="20151224"){cout << "F" << endl;continue;}G[px][py] = 0;if(visited[px][py]==0){REP(i,4){cout << "R" << endl;dir=(dir+1)%4;cin>>s;if(s=="20151224")break;int cnt = atoi(s.c_str());REP(i,cnt){G[px+(i+1)*dx[dir]][py+(i+1)*dy[dir]] = 0;}G[px+(cnt+1)*dx[dir]][py+(cnt+1)*dy[dir]] = 1;}if(s=="20151224"){cout << "F" << endl;continue;}visited[px][py] = 1;}// bfsbool v[100][100];REP(i,100)REP(j,100)v[i][j]=false;v[px][py]=true;queue< pair< pii,vector<pii> > > Q;Q.push(make_pair(make_pair(px,py),vector<pii>()));int tx=-1,ty=-1;vector<pii> tpath;while(!Q.empty()){pair< pii,vector<pii> > P = Q.front(); Q.pop();int nx = P.first.first, ny = P.first.second;vector<pii> path = P.second;path.push_back(make_pair(nx,ny));REP(i,4){int nnx = nx+dx[i], nny = ny+dy[i];if(v[nnx][nny])continue;if(G[nnx][nny]!=0)continue;if(visited[nnx][nny]==0){tx = nnx;ty = nny;tpath = path;break;}v[nnx][nny] = true;Q.push(make_pair(make_pair(nnx,nny),path));}if(tx!=-1 && ty!=-1)break;}// trace path and go to (tx,ty)DEBUG(tx);DEBUG(ty);tpath.push_back(make_pair(tx,ty));REPR(i,tpath.size()){int vx = tpath[i].first - tpath[i-1].first;int vy = tpath[i].second - tpath[i-1].second;int ndir;if(vx==1)ndir = 0;if(vx==-1)ndir = 2;if(vy==1)ndir = 1;if(vy==-1)ndir = 3;if(dir%2 != ndir%2){cout << "R" << endl;cin >> s;dir = (dir+1)%4;}if(dir==ndir){cout << "F" << endl;}else{cout << "B" << endl;}if(!(tpath[i].first == tx && tpath[i].second == ty)){cin >> s;}}px = tx;py = ty;}return 0;}