QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#714324#8523. Puzzle IILogingTL 2172ms10092kbC++142.0kb2024-11-05 22:39:042024-11-05 22:39:07

Judging History

This is the latest submission verdict.

  • [2024-11-05 22:39:07]
  • Judged
  • Verdict: TL
  • Time: 2172ms
  • Memory: 10092kb
  • [2024-11-05 22:39:04]
  • Submitted

answer

#include<cstdio>
#include<algorithm>
#define M 600005
using namespace std;
char A[M],B[M];
int L[M],R[M];
int Ans[M][2];
int sz;
bool flag;
char st;
void Swap(int &a,int &b,int &c,int &d){
	swap(R[L[a]],R[L[c]]);
	swap(L[R[b]],L[R[d]]);
	swap(L[a],L[c]);
	swap(R[b],R[d]);
	swap(a,c);swap(b,d);
}
int n,m;
void Add(int &x){
	x++;
	if(x>n)x-=n;
}
void Del(int &x){
	x--;
	if(x==0)x+=n;
}
int Inv;
char C[M],D[M];
void Print(){
	printf("%s\n%s\n\n",C+1,D+1);
}
int F(int x){
	if(x<=0)return x+n;
	if(x>n)return x-n;
	return x;
}
void Addans(int p1,int p2){
	sz++;
//	int tmp1=p1,tmp2=p2;
//	for(int i=1;i<=n;i++){
//		if(i==tmp1)putchar('[');
//		else if(F(tmp1+m-1)==i)putchar(']');
//		else putchar(' ');
//	}
//	puts("");
//	printf("%s\n",C+1);
//	for(int i=1;i<=n;i++){
//		if(i==tmp2)putchar('[');
//		else if(F(tmp2+m-1)==i)putchar(']');
//		else putchar(' ');
//	}
//	puts("");
//	printf("%s\n",D+1);
	
	for(int i=1;i<=m;i++){
//		printf("m=%d\n",flag?(n-m):m);
		swap(C[F(p1+i-1)],D[F(p2+i-1)]);
	}
//	printf("%s\n%s\n\n",C+1,D+1);

	Ans[sz][0]=p1;Ans[sz][1]=p2;
}
int main(){
	scanf("%d%d",&n,&m);
	scanf("%s",A+1);
	scanf("%s",B+1);
	for(int i=n+1;i<=n+n;i++)A[i]=B[i-n];
	int cnt=0;
	for(int i=1;i<=n;i++){
		int lst=i-1,nxt=i+1;
		if(lst==0)lst=n;
		if(nxt==n+1)nxt=1;
		L[i]=lst;R[i]=nxt;
		L[i+n]=lst+n;R[i+n]=nxt+n;
		C[i]=A[i];D[i]=B[i];
		cnt+=A[i]=='B';
	}
//	if(m>=n/2){flag=true;m=n-m;}
	if(cnt<=n/2)st='C';
	else st='B';
	int fr1=1,ed1=m,fr2=n+1,ed2=n+m;
	int p1=1,p2=1;
	while(1){
		int cnt=0;
		while(A[fr1]==st&&cnt<=n){
			fr1=R[fr1];
			ed1=R[ed1];
			Add(p1);
			cnt++;
			continue;
		}
		if(cnt>n)break;
		while(A[ed2]!=st){
			fr2=L[fr2];
			ed2=L[ed2];
			Del(p2);
		}
		fr1=R[fr1];ed1=R[ed1];Add(p1);
		Addans(p1,p2);
		Swap(fr1,ed1,fr2,ed2);
		
		fr1=L[fr1];ed1=L[ed1];Del(p1);
		
		Addans(p1,p2);
		Swap(fr1,ed1,fr2,ed2);
//	printf("%s\n%s\n\n",C+1,D+1);
	}
	printf("%d\n",sz);
	for(int i=1;i<=sz;i++)printf("%d %d\n",Ans[i][0],Ans[i][1]);
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5732kb

input:

6 3
BCCBCC
BBCBBC

output:

4
2 1
1 1
4 4
3 4

result:

ok moves = 4

Test #2:

score: 0
Accepted
time: 1ms
memory: 7700kb

input:

2 1
BC
BC

output:

2
2 2
1 2

result:

ok moves = 2

Test #3:

score: 0
Accepted
time: 0ms
memory: 7788kb

input:

2 1
BB
CC

output:

0

result:

ok moves = 0

Test #4:

score: 0
Accepted
time: 0ms
memory: 7764kb

input:

2 1
CC
BB

output:

0

result:

ok moves = 0

Test #5:

score: 0
Accepted
time: 1ms
memory: 5704kb

input:

3 1
CCC
BBB

output:

0

result:

ok moves = 0

Test #6:

score: 0
Accepted
time: 1ms
memory: 7756kb

input:

3 1
CBC
BCB

output:

2
3 2
2 2

result:

ok moves = 2

Test #7:

score: 0
Accepted
time: 1ms
memory: 9732kb

input:

3 2
BBB
CCC

output:

0

result:

ok moves = 0

Test #8:

score: 0
Accepted
time: 0ms
memory: 9768kb

input:

3 2
BCB
BCC

output:

2
3 3
2 3

result:

ok moves = 2

Test #9:

score: 0
Accepted
time: 0ms
memory: 9804kb

input:

4 2
CCCB
BBCB

output:

2
1 2
4 2

result:

ok moves = 2

Test #10:

score: 0
Accepted
time: 1ms
memory: 9796kb

input:

9 6
CCCBCCCBB
BBBCBBBCC

output:

6
5 8
4 8
8 5
7 5
8 5
7 5

result:

ok moves = 6

Test #11:

score: 0
Accepted
time: 1ms
memory: 9808kb

input:

21 3
CCCCBBCBCCCCCCCBCCCCC
BBCCBCBBBBBBBBBCBBBBB

output:

8
6 1
5 1
6 14
5 14
7 4
6 4
17 3
16 3

result:

ok moves = 8

Test #12:

score: 0
Accepted
time: 0ms
memory: 9796kb

input:

49 41
CBCCBCCBCCBCCBCCCBBCCBCBBCCCBBCCBCBCBCBCCCCBCBCCB
BCCCCBCBBBBCBCBBBBBCBBBBCCCCBCBBCBBCBBBBCBCBCBBBC

output:

38
3 1
2 1
5 46
4 46
7 44
6 44
9 42
8 42
11 41
10 41
14 41
13 41
14 41
13 41
16 41
15 41
17 37
16 37
17 32
16 32
20 31
19 31
20 27
19 27
22 26
21 26
23 26
22 26
24 26
23 26
25 26
24 26
30 24
29 24
32 20
31 20
35 18
34 18

result:

ok moves = 38

Test #13:

score: 0
Accepted
time: 0ms
memory: 5692kb

input:

114 8
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

output:

0

result:

ok moves = 0

Test #14:

score: 0
Accepted
time: 0ms
memory: 5740kb

input:

266 28
CBBCBBCCCCBCBBCBBBCBCBCBCBBCBCBBCCCCBCCCCCBCCBBCCBBCBCBBCCCCCCBBBCCCBCCBCBBCCCBCCCCCCBCBBCCCBCBBCCBCBBBCBCCCBBCBCCCCBBCBBCBBCCBBCCCCCBBCCCBCCCCCCCCBBBBBBCBCCBCCCCBBCBBBBCBCCCCCCCBCBBCBCCCCCCCCCCCBBBBCCCCBCBCCCBCCCCCCCCCBCBCCCBBBCCCBCCBCBBCBCCCCCCBCBCCCCBCBCCBCCCCBCB
CCBCBCBBCBCBBCBCCCBBBCBCBB...

output:

206
3 266
2 266
3 264
2 264
4 263
3 263
4 260
3 260
8 260
7 260
9 260
8 260
9 259
8 259
10 257
9 257
10 256
9 256
10 254
9 254
11 253
10 253
12 252
11 252
13 252
12 252
14 250
13 250
14 245
13 245
15 245
14 245
18 242
17 242
20 240
19 240
27 236
26 236
41 235
40 235
44 226
43 226
44 218
43 218
47 21...

result:

ok moves = 206

Test #15:

score: 0
Accepted
time: 2ms
memory: 9732kb

input:

620 443
BBBBBBCBBBCBBCBCBCBBBBCCCBCCBCBBBBBBCCCBBBCCBBCBCBCBBCCCCBCBBCBCCCCBBBBBBCCCCCBBBBCCBCBBBBBCBCBBCBCBCCCCBCBBCBBBCBBBCCCBCCCBBBBBCCBBCCBBBCCBCCBCBBCBCCCCCCCCCBCBCBBBCBBCBBCBBBBBBBCCBBBBBBBBBBCBBCBBCBBCCCBBCCBBBBCCCBBBBBBCBBBBBBBBCBBCBCBBBCCBBBBCCBBBCBCBCBBBBBCBBCBBBBCBBBBCCBBBCBBBBBCBBCCCCBCC...

output:

484
8 1
7 1
11 619
10 619
13 619
12 619
14 618
13 618
15 618
14 618
19 618
18 618
19 618
18 618
19 616
18 616
20 615
19 615
20 613
19 613
21 606
20 606
27 606
26 606
27 606
26 606
27 605
26 605
30 604
29 604
30 603
29 603
32 598
31 598
33 595
32 595
34 594
33 594
36 593
35 593
36 592
35 592
36 592
3...

result:

ok moves = 484

Test #16:

score: 0
Accepted
time: 2ms
memory: 9824kb

input:

1446 646
CCCBCCCCCCCBBCCBBCCCCBBCCCBBCCCCCCCCCCCCCCCBCCCCCCCCBBCCBBCCCBCBBBCCCCBBCCCCCCCCCCCBCBCCCBBCCCCBBCBCBCCCCCCCBCCCCCCCBCCBCBBCCCCCCCCCCCCBCCCBCCCCCCBCCCBCCCCCBBCCCBBCCCBBBCCBCCBCCBBBCBCBCCCCBCBCCCBCCCCBBCCCCCCCBCCCCBCCCBBBCCCBCCBBCCCCBCCCBBCBCCCCCBBCCBCCCCCCBCCCCCCCCCCCCCCBCCCCCBCBCCCCBCCCCCB...

output:

874
5 1444
4 1444
12 1444
11 1444
12 1444
11 1444
14 1443
13 1443
14 1439
13 1439
18 1439
17 1439
18 1432
17 1432
21 1431
20 1431
21 1428
20 1428
36 1427
35 1427
44 1424
43 1424
44 1417
43 1417
46 1414
45 1414
46 1414
45 1414
49 1402
48 1402
50 1400
49 1400
50 1392
49 1392
50 1388
49 1388
54 1377
53...

result:

ok moves = 874

Test #17:

score: 0
Accepted
time: 5ms
memory: 9808kb

input:

3374 2755
BCBBCBBBCBBBBBBBBBCCBBBBBBBCCBBCBBCBBBBBCBBBBBBBBCBBBBBBBBBBBBCBBBCCBBBBCBBBBBCBBBBBCBBBBCBBBBBBBBBCBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBCCBBBBBBBBBCBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBCBBBBBBBBBBBBBBCCBCBCBCBBBBCBBBCBBBBBBBBCBBCBCBBCBCCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBCBBBBBBBBBBB...

output:

1216
3 3372
2 3372
5 3368
4 3368
8 3366
7 3366
17 3364
16 3364
17 3364
16 3364
24 3358
23 3358
24 3350
23 3350
26 3349
25 3349
28 3342
27 3342
33 3340
32 3340
41 3335
40 3335
53 3335
52 3335
56 3325
55 3325
56 3325
55 3325
60 3325
59 3325
65 3322
64 3322
70 3318
69 3318
74 3318
73 3318
83 3310
82 33...

result:

ok moves = 1216

Test #18:

score: 0
Accepted
time: 57ms
memory: 9836kb

input:

7872 7827
BCBBCBCBBCCBCBBBCCCBBBBBBBCBBBBCCBCCBCBBBBBBCBBCBBBCCCBBBCCCCBCBBBBCBBCCBBBBCCBBCBBBCBCBBCBCBBCCBBBCCBBBBCCBBCBBBBBBCBBBBBBBBCCBBCCCCBCCCBBCCCBBCBCBBBCBBBBCBBBBCBCBBBCCBBCCCCBBBCBBCCBBBBBBCBBBBCCCBBBCCCBBCCCBBBBBBCCBBBCCCCBBBCBBCBCCBBBCCCCBCBBCCBBBBCCBBBCBBCBBBCBBBCBBBBCCBBBBBCCBCBCBBBBBBB...

output:

5928
3 1
2 1
5 7870
4 7870
6 7868
5 7868
8 7862
7 7862
8 7857
7 7857
9 7855
8 7855
12 7853
11 7853
12 7853
11 7853
12 7851
11 7851
19 7849
18 7849
23 7840
22 7840
23 7838
22 7838
24 7838
23 7838
24 7838
23 7838
25 7837
24 7837
31 7837
30 7837
33 7836
32 7836
36 7833
35 7833
36 7831
35 7831
36 7831
3...

result:

ok moves = 5928

Test #19:

score: 0
Accepted
time: 155ms
memory: 9900kb

input:

18368 17997
CBBBBBBBBBBCBBBBBBBBBBBBBBCBBCCBBBBBBBBBBBBBCBCBBBBBBBBCBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBCBBBCBCBBBBBCBCBBCBBBBBBBBBBBBBCCCBBBBBBCBBBBCBCBBCBBBBBCBBBBBBBCCBBBBCCBCBBBBBBBBBBBBCBBBBBBBBCBCBBBBBBBBCBCBBBBBBBBBBBCBBBBCCBBBBBBBCBBBBBBBBBBBBBBBCCBBCBCBBCBCBBBCBBBBBBBBBBBBBCBBCBBBBBBBCCCBBBBBBBB...

output:

7330
2 1
1 1
12 18363
11 18363
26 18361
25 18361
28 18360
27 18360
28 18357
27 18357
41 18356
40 18356
42 18355
41 18355
50 18352
49 18352
55 18339
54 18339
69 18333
68 18333
79 18333
78 18333
82 18327
81 18327
83 18326
82 18326
88 18326
87 18326
89 18323
88 18323
91 18316
90 18316
104 18315
103 183...

result:

ok moves = 7330

Test #20:

score: 0
Accepted
time: 275ms
memory: 7896kb

input:

42858 28689
CCCCCCCCCCCCCCCCCCCCBCCCBBCCCBCCCCCCCCCBCCCCCCCBCCCBCCCCCBCCCCCCCCBCCBCCBCCCCCCCCCCCCCCCCCBCCCCCCCCCBCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCBBCCCCCCCCCCCCCCBBCCCBCCCCCCCCCCBCCCCCCCBCCCCBCBCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCCCBCBCCCCCCCCCCCCCCBCCCCCCCCBCCCCCCCCCCCCCCCCCC...

output:

8086
22 1
21 1
25 42853
24 42853
25 42843
24 42843
28 42821
27 42821
37 42799
36 42799
44 42792
43 42792
47 42773
46 42773
52 42757
51 42757
60 42750
59 42750
62 42748
61 42748
64 42727
63 42727
81 42707
80 42707
90 42698
89 42698
94 42688
93 42688
122 42683
121 42683
139 42683
138 42683
139 42642
1...

result:

ok moves = 8086

Test #21:

score: 0
Accepted
time: 2172ms
memory: 10092kb

input:

100002 40466
BBBBBBBCCBCBCCBCBBBBCCBBCBBBBBBBBBBCBBBBCBBBBBCBBBBBBBBBCBBBCBBBCCBCBCBBBBBBCBBBBBBBCBBBBBCBBBBCBCBCBBBBBBBBCBBBBBBBBCBCBBBBCBBBBBBBBBBBBBCBCBBCBBBBBBBBBBBCBBBBBBBCBCBCBCBBBBBBBBCBCBBBBBBBBCBBBBBBBBCBCCBBBCCBBCBBCBBBBBBBBBBCBBBCBBBBBBBBBBBBCBBCCBBCBBCBBBBCBBBBCBBBCCBBBCBBBBBBBCBBBBCBBBC...

output:

45728
9 99999
8 99999
9 99998
8 99998
10 99994
9 99994
11 99989
10 99989
11 99988
10 99988
12 99987
11 99987
16 99978
15 99978
16 99968
15 99968
18 99966
17 99966
28 99964
27 99964
32 99964
31 99964
37 99959
36 99959
46 99958
45 99958
49 99955
48 99955
52 99940
51 99940
52 99940
51 99940
53 99930
52...

result:

ok moves = 45728

Test #22:

score: -100
Time Limit Exceeded

input:

233338 159967
CCBCBBCCCCBBCCCCCCCCBCCCBCCCCBCCBCCCCCCCCCBCBCCBBCBBCCCCBCCCCCCCCCCCCCCCCCCCBCCBCCBBCBCCBBBCCBCCCCBBCCCBCCCCCCCCCCCBCCBCCCCCCCCBCCCBBCBCCCBCCCCCBCCBCCBCCCCCCCBCCCCCBCCBBCCCCCCCBCCCCCCCCBBBCCCCCCCCCCCCBBBCCCBBCCBCBCCCCCCCCCBCCCCBCCCCCCCCBBCCCCBCCCCBCCCBCCCBCCCCCBCCCCCBBCCCBCCCCCCCCCCCCC...

output:


result: