QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#306224 | #3102. Navigation 2 | NATURAL6 | 0 | 0ms | 0kb | C++20 | 2.7kb | 2024-01-16 15:40:35 | 2024-01-16 15:40:36 |
Anna
#include<bits/stdc++.h>
#include "Anna.h"
using namespace std;
const int dx[7]={0,0,0,1,1,1,2},dy[7]={0,1,2,0,1,2,0};
int id[3][3]={{1,2,3},{4,0,5},{6,7,8}};
int r[10],c[10];
inline int get_pos(int x,int y,int op)
{
if(abs(x-r[op])>=2||abs(y-c[op])>=2)
{
if(x+1<r[op])return 8;//D
if(x-1>r[op])return 9;//U
if(y+1<c[op])return 10;//R
if(y-1>c[op])return 11;//L
}
return id[r[op]-x+1][c[op]-y+1];
}
void Anna(int N,int K,vector<int>R,vector<int>C)
{
int op[3][3],X,Y,sX[10],sY[10],vis[10],tp;
memset(op,1,sizeof(op));memset(vis,0,sizeof(vis));
for(int i=0;i<7;++i)op[(R[i]+2-dx[i])%3][(C[i]+2-dy[i])%3]=0;
for(int i=0;i<=2;++i)for(int j=0;j<=2;++j)if(op[i][j]){X=i,Y=j;break;}
for(int i=X;i<N;i+=3)for(int j=Y;j<N;j+=3)SetFlag(i,j,12);
for(int i=0;i<7;++i)
{
sX[i]=X-2+dx[i];
sY[i]=Y-2+dy[i];
if(sX[i]<0)sX[i]+=3;
if(sY[i]<0)sY[i]+=3;
r[i]=R[i],c[i]=C[i];
}
for(int op=0;op<7;++op)for(int i=sX[op];i<N;i+=3)for(int j=sY[op];j<N;j+=3)if(abs(i-R[op])<=1&&abs(j-C[op])<=1)vis[get_pos(i,j,op)]=1;
for(int i=1;i<=8;++i)if(!vis[i]){tp=i;break;}
for(int i=0;i<=2;++i)for(int j=0;j<=2;++j)id[i][j]-=(id[i][j]>=tp);
for(int i=X;i<N;i+=3)for(int j=Y-1;j<N;j+=3)if(j>=0)SetFlag(i,j,tp);
for(int op=0;op<7;++op)for(int i=sX[op];i<N;i+=3)for(int j=sY[op];j<N;j+=3)SetFlag(i,j,get_pos(i,j,op));
return ;
}
Bruno
#include<bits/stdc++.h>
#include "Bruno.h"
using namespace std;
const int dx[7]={0,0,0,1,1,1,2},dy[7]={0,1,2,0,1,2,0};
inline int get_dir(int x,int y)
{
if(x<1)return 3;
if(x>1)return 2;
if(y<1)return 1;
if(y>1)return 0;
return 4;
}
vector<int> Bruno(int K,vector<int>value)
{
vector<int>ans;ans.resize(7);
int X,Y,mp[3][3],tp;
for(int i=0;i<=2;++i)for(int j=0;j<=2;++j)
{
mp[i][j]=value[i*3+j];
if(mp[i][j]==12)X=i,Y=j;
}
tp=mp[X][Y==0?2:Y-1];
for(int i=0;i<=2;++i)for(int j=0;j<=2;++j)mp[i][j]+=(mp[i][j]>=tp);
for(int i=0,x,y;i<7;++i)
{
x=X-2+dx[i],y=Y-2+dy[i];
if(x<0)x+=3;if(y<0)y+=3;
if(mp[x][y]==9)ans[i]=2;
else if(mp[x][y]==10)ans[i]=3;
else if(mp[x][y]==11)ans[i]=0;
else if(mp[x][y]==12)ans[i]=1;
else if(mp[x][y]==1)ans[i]=get_dir(x-1,y-1);
else if(mp[x][y]==2)ans[i]=get_dir(x-1,y);
else if(mp[x][y]==3)ans[i]=get_dir(x-1,y+1);
else if(mp[x][y]==4)ans[i]=get_dir(x,y-1);
else if(mp[x][y]==5)ans[i]=get_dir(x,y+1);
else if(mp[x][y]==6)ans[i]=get_dir(x+1,y-1);
else if(mp[x][y]==7)ans[i]=get_dir(x+1,y);
else if(mp[x][y]==8)ans[i]=get_dir(x+1,y+1);
}
return ans;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Runtime Error
input:
288 7 7 1 12 3 6 11 9 9 9
output:
1 2 1 3 3 3 4
input:
output:
Wrong Answer [2]
result:
wrong answer