QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#106519#3061. Donut DroneDeterminantRE 4ms3736kbC++141.5kb2023-05-17 23:26:452023-05-17 23:26:49

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-17 23:26:49]
  • 评测
  • 测评结果:RE
  • 用时:4ms
  • 内存:3736kb
  • [2023-05-17 23:26:45]
  • 提交

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();
		}
	}
}

詳細信息

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...

output:


result: