QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#106519 | #3061. Donut Drone | Determinant | RE | 4ms | 3736kb | C++14 | 1.5kb | 2023-05-17 23:26:45 | 2023-05-17 23:26:49 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;const int N=2007,M=47;
int n,m,q,a[N][N],b[N][N],c[N][N],d[N],vis[N],bl[N],fr[N],ed[N],nx,ny;
char ch[9];
void calc(int x,int y){
int x0=(x+n-2)%n+1,x1=x,x2=x%n+1,y0=y%m+1;
if(a[x0][y0]>a[x1][y0])b[x][y]=(a[x0][y0]>a[x2][y0]?x0:x2);
else b[x][y]=(a[x1][y0]>a[x2][y0]?x1:x2);
}
void upd_d(){
for(int i=1;i<=n;++i){
int p=i;for(int j=0;j<=bl[m];++j)p=c[j][p];d[i]=p;
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)scanf("%d",&a[i][j]);
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)calc(i,j);
for(int i=1;i<=m;++i)bl[i]=i/M;nx=ny=1;
for(int i=0;i<=bl[m];++i)fr[i]=max(i*M,1),ed[i]=min(m,i*M+M-1);
for(int i=0;i<=bl[m];++i){
for(int j=1;j<=n;++j){
int p=j;for(int k=fr[i];k<=ed[i];++k)p=b[p][k];
c[i][j]=p;
}
}
upd_d();
scanf("%d",&q);while(q--){
int x,y,z;scanf("%s%d",ch,&x);
if(ch[0]=='m'){
while(x&&ny!=m+1)nx=b[nx][ny],ny++,x--;if(ny>m)ny-=m;
if(!x){printf("%d %d\n",nx,ny);continue;}
int w=x/m,qt=0;for(int i=1;i<=n;++i)vis[i]=-1;vis[nx]=0;
while(qt<w){
if(vis[nx]>=0){w=(w-qt)%(qt-vis[nx]);qt=0;break;}
nx=d[nx],vis[nx]=++qt;
}
while(qt<w)++qt,nx=d[nx];
for(int i=1;i<=x%m;++i)nx=b[nx][ny],ny++;
printf("%d %d\n",nx,ny);
}
else{
scanf("%d%d",&y,&z);a[x][y]=z;
int x0=(x+n-2)%n+1,x1=x,x2=x%n+1,y0=(y+m-2)%m+1;
calc(x0,y0);calc(x1,y0);calc(x2,y0);y0=bl[y0];
for(int i=1;i<=n;++i){
int p=i;for(int j=fr[y0];j<=ed[y0];++j)p=b[p][j];
c[y0][i]=p;
}
upd_d();
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3564kb
input:
4 4 1 2 9 3 3 5 4 8 4 3 2 7 5 8 1 6 4 move 1 move 1 change 1 4 100 move 1
output:
4 2 1 3 1 4
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 3716kb
input:
3 4 10 20 30 40 50 60 70 80 90 93 95 99 3 move 4 change 2 1 100 move 4
output:
3 1 2 1
result:
ok 2 lines
Test #3:
score: 0
Accepted
time: 4ms
memory: 3736kb
input:
20 30 8 1 7 4 3 1 2 1 5 5 2 7 6 4 7 1 2 9 1 9 9 9 9 6 4 9 1 6 3 10 7 3 5 6 5 3 5 3 1 9 8 8 7 7 6 7 5 10 9 6 5 3 8 2 7 10 6 8 4 3 6 4 3 1 7 7 6 7 2 7 3 6 8 6 3 2 7 8 10 8 6 5 6 10 2 6 5 10 10 9 2 5 10 9 4 9 3 6 10 8 1 7 3 3 7 3 3 6 7 5 1 1 10 6 8 5 4 2 1 8 5 1 2 8 3 4 2 4 4 9 6 3 1 5 9 1 9 3 8 3 7 10...
output:
19 10 18 19 3 24 3 30 3 2 4 3 3 8 7 14 3 21 2 27 3 7 3 8 6 16 5 17 3 24 2 27 3 29 3 8 7 12 6 16 3 22 3 2 7 12 3 19 1 22 4 25 4 3 3 5 7 12 3 20 1 22 2 24 3 2 6 11 3 20 2 24 4 4 3 5 5 10 6 11 4 18 2 21 3 29 3 2 3 5 4 9 6 16 2 25 1 26 2 1 4 6 7 15 2 24 3 2 7 12 3 19 3 28 5 4 9 11 9 12 11 17 10 19 12 21...
result:
ok 1945 lines
Test #4:
score: -100
Runtime Error
input:
50 50 126812431 909179109 607682292 96000160 425314080 189788877 721251789 103560861 114082307 888028612 277663589 257100764 842807257 327052508 652365304 770138116 384723035 680037089 675501229 509497026 174936063 991259231 761329528 658883078 806406343 741076652 973854314 192609094 398064987 65322...