QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#714333#8523. Puzzle IILogingTL 2190ms10152kbC++142.0kb2024-11-05 22:40:432024-11-05 22:40:45

Judging History

This is the latest submission verdict.

  • [2024-11-05 22:40:45]
  • Judged
  • Verdict: TL
  • Time: 2190ms
  • Memory: 10152kb
  • [2024-11-05 22:40:43]
  • 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=R[fr2];
			ed2=R[ed2];
			Add(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;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 0ms
memory: 9840kb

input:

2 1
BC
BC

output:

2
2 2
1 2

result:

ok moves = 2

Test #3:

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

input:

2 1
BB
CC

output:

0

result:

ok moves = 0

Test #4:

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

input:

2 1
CC
BB

output:

0

result:

ok moves = 0

Test #5:

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

input:

3 1
CCC
BBB

output:

0

result:

ok moves = 0

Test #6:

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

input:

3 1
CBC
BCB

output:

2
3 2
2 2

result:

ok moves = 2

Test #7:

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

input:

3 2
BBB
CCC

output:

0

result:

ok moves = 0

Test #8:

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

input:

3 2
BCB
BCC

output:

2
3 3
2 3

result:

ok moves = 2

Test #9:

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

input:

4 2
CCCB
BBCB

output:

2
1 2
4 2

result:

ok moves = 2

Test #10:

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

input:

9 6
CCCBCCCBB
BBBCBBBCC

output:

6
5 3
4 3
8 4
7 4
8 1
7 1

result:

ok moves = 6

Test #11:

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

input:

21 3
CCCCBBCBCCCCCCCBCCCCC
BBCCBCBBBBBBBBBCBBBBB

output:

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

result:

ok moves = 8

Test #12:

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

input:

49 41
CBCCBCCBCCBCCBCCCBBCCBCBBCCCBBCCBCBCBCBCCCCBCBCCB
BCCCCBCBBBBCBCBBBBBCBBBBCCCCBCBBCBBCBBBBCBCBCBBBC

output:

38
3 1
2 1
5 3
4 3
7 5
6 5
9 9
8 9
11 13
10 13
14 15
13 15
14 16
13 16
16 17
15 17
17 20
16 20
17 30
16 30
20 32
19 32
20 38
19 38
22 45
21 45
23 46
22 46
24 48
23 48
25 49
24 49
30 2
29 2
32 7
31 7
35 13
34 13

result:

ok moves = 38

Test #13:

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

input:

114 8
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

output:

0

result:

ok moves = 0

Test #14:

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

input:

266 28
CBBCBBCCCCBCBBCBBBCBCBCBCBBCBCBBCCCCBCCCCCBCCBBCCBBCBCBBCCCCCCBBBCCCBCCBCBBCCCBCCCCCCBCBBCCCBCBBCCBCBBBCBCCCBBCBCCCCBBCBBCBBCCBBCCCCCBBCCCBCCCCCCCCBBBBBBCBCCBCCCCBBCBBBBCBCCCCCCCBCBBCBCCCCCCCCCCCBBBBCCCCBCBCCCBCCCCCCCCCBCBCCCBBBCCCBCCBCBBCBCCCCCCBCBCCCCBCBCCBCCCCBCB
CCBCBCBBCBCBBCBCCCBBBCBCBB...

output:

206
3 6
2 6
3 14
2 14
4 21
3 21
4 22
3 22
8 24
7 24
9 30
8 30
9 33
8 33
10 34
9 34
10 38
9 38
10 39
9 39
11 44
10 44
12 45
11 45
13 47
12 47
14 49
13 49
14 51
13 51
15 53
14 53
18 55
17 55
20 57
19 57
27 59
26 59
41 61
40 61
44 63
43 63
44 68
43 68
47 69
46 69
47 72
46 72
48 73
47 73
50 74
49 74
50 ...

result:

ok moves = 206

Test #15:

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

input:

620 443
BBBBBBCBBBCBBCBCBCBBBBCCCBCCBCBBBBBBCCCBBBCCBBCBCBCBBCCCCBCBBCBCCCCBBBBBBCCCCCBBBBCCBCBBBBBCBCBBCBCBCCCCBCBBCBBBCBBBCCCBCCCBBBBBCCBBCCBBBCCBCCBCBBCBCCCCCCCCCBCBCBBBCBBCBBCBBBBBBBCCBBBBBBBBBBCBBCBBCBBCCCBBCCBBBBCCCBBBBBBCBBBBBBBBCBBCBCBBBCCBBBBCCBBBCBCBCBBBBBCBBCBBBBCBBBBCCBBBCBBBBBCBBCCCCBCC...

output:

484
8 1
7 1
11 2
10 2
13 3
12 3
14 6
13 6
15 8
14 8
19 11
18 11
19 14
18 14
19 15
18 15
20 20
19 20
20 26
19 26
21 27
20 27
27 28
26 28
27 34
26 34
27 36
26 36
30 37
29 37
30 43
29 43
32 44
31 44
33 45
32 45
34 47
33 47
36 49
35 49
36 52
35 52
36 57
35 57
36 59
35 59
37 60
36 60
39 62
38 62
40 64
39...

result:

ok moves = 484

Test #16:

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

input:

1446 646
CCCBCCCCCCCBBCCBBCCCCBBCCCBBCCCCCCCCCCCCCCCBCCCCCCCCBBCCBBCCCBCBBBCCCCBBCCCCCCCCCCCBCBCCCBBCCCCBBCBCBCCCCCCCBCCCCCCCBCCBCBBCCCCCCCCCCCCBCCCBCCCCCCBCCCBCCCCCBBCCCBBCCCBBBCCBCCBCCBBBCBCBCCCCBCBCCCBCCCCBBCCCCCCCBCCCCBCCCBBBCCCBCCBBCCCCBCCCBBCBCCCCCBBCCBCCCCCCBCCCCCCCCCCCCCCBCCCCCBCBCCCCBCCCCCB...

output:

874
5 3
4 3
12 4
11 4
12 5
11 5
14 6
13 6
14 8
13 8
18 11
17 11
18 15
17 15
21 19
20 19
21 20
20 20
36 23
35 23
44 24
43 24
44 25
43 25
46 26
45 26
46 27
45 27
49 30
48 30
50 33
49 33
50 36
49 36
50 38
49 38
54 42
53 42
54 46
53 46
65 48
64 48
66 49
65 49
69 50
68 50
69 51
68 51
73 65
72 65
73 67
72...

result:

ok moves = 874

Test #17:

score: 0
Accepted
time: 3ms
memory: 9832kb

input:

3374 2755
BCBBCBBBCBBBBBBBBBCCBBBBBBBCCBBCBBCBBBBBCBBBBBBBBCBBBBBBBBBBBBCBBBCCBBBBCBBBBBCBBBBBCBBBBCBBBBBBBBBCBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBCCBBBBBBBBBCBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBCBBBBBBBBBBBBBBCCBCBCBCBBBBCBBBCBBBBBBBBCBBCBCBBCBCCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBCBBBBBBBBBBB...

output:

1216
3 6
2 6
5 11
4 11
8 21
7 21
17 22
16 22
17 28
16 28
24 29
23 29
24 40
23 40
26 62
25 62
28 63
27 63
33 65
32 65
41 77
40 77
53 83
52 83
56 93
55 93
56 109
55 109
60 115
59 115
65 119
64 119
70 121
69 121
74 124
73 124
83 126
82 126
94 130
93 130
101 133
100 133
111 134
110 134
111 135
110 135
1...

result:

ok moves = 1216

Test #18:

score: 0
Accepted
time: 58ms
memory: 9860kb

input:

7872 7827
BCBBCBCBBCCBCBBBCCCBBBBBBBCBBBBCCBCCBCBBBBBBCBBCBBBCCCBBBCCCCBCBBBBCBBCCBBBBCCBBCBBBCBCBBCBCBBCCBBBCCBBBBCCBBCBBBBBBCBBBBBBBBCCBBCCCCBCCCBBCCCBBCBCBBBCBBBBCBBBBCBCBBBCCBBCCCCBBBCBBCCBBBBBBCBBBBCCCBBBCCCBBCCCBBBBBBCCBBBCCCCBBBCBBCBCCBBBCCCCBCBBCCBBBBCCBBBCBBCBBBCBBBCBBBBCCBBBBBCCBCBCBBBBBBB...

output:

5928
3 1
2 1
5 4
4 4
6 5
5 5
8 7
7 7
8 9
7 9
9 14
8 14
12 17
11 17
12 19
11 19
12 20
11 20
19 21
18 21
23 23
22 23
23 26
22 26
24 29
23 29
24 30
23 30
25 32
24 32
31 37
30 37
33 38
32 38
36 42
35 42
36 44
35 44
36 45
35 45
39 48
38 48
39 54
38 54
39 57
38 57
39 58
38 58
40 59
39 59
44 70
43 70
46 71...

result:

ok moves = 5928

Test #19:

score: 0
Accepted
time: 168ms
memory: 7832kb

input:

18368 17997
CBBBBBBBBBBCBBBBBBBBBBBBBBCBBCCBBBBBBBBBBBBBCBCBBBBBBBBCBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBCBBBCBCBBBBBCBCBBCBBBBBBBBBBBBBCCCBBBBBBCBBBBCBCBBCBBBBBCBBBBBBBCCBBBBCCBCBBBBBBBBBBBBCBBBBBBBBCBCBBBBBBBBCBCBBBBBBBBBBBCBBBBCCBBBBBBBCBBBBBBBBBBBBBBBCCBBCBCBBCBCBBBCBBBBBBBBBBBBBCBBCBBBBBBBCCCBBBBBBBB...

output:

7330
2 1
1 1
12 2
11 2
26 8
25 8
28 18
27 18
28 24
27 24
41 35
40 35
42 36
41 36
50 38
49 38
55 50
54 50
69 51
68 51
79 53
78 53
82 54
81 54
83 55
82 55
88 56
87 56
89 59
88 59
91 65
90 65
104 67
103 67
104 80
103 80
104 83
103 83
110 87
109 87
114 100
113 100
115 104
114 104
117 115
116 115
122 129...

result:

ok moves = 7330

Test #20:

score: 0
Accepted
time: 279ms
memory: 9960kb

input:

42858 28689
CCCCCCCCCCCCCCCCCCCCBCCCBBCCCBCCCCCCCCCBCCCCCCCBCCCBCCCCCBCCCCCCCCBCCBCCBCCCCCCCCCCCCCCCCCBCCCCCCCCCBCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCBBCCCCCCCCCCCCCCBBCCCBCCCCCCCCCCBCCCCCCCBCCCCBCBCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCCCBCBCCCCCCCCCCCCCCBCCCCCCCCBCCCCCCCCCCCCCCCCCC...

output:

8086
22 1
21 1
25 9
24 9
25 24
24 24
28 33
27 33
37 38
36 38
44 47
43 47
47 76
46 76
52 85
51 85
60 93
59 93
62 99
61 99
64 108
63 108
81 122
80 122
90 123
89 123
94 131
93 131
122 160
121 160
139 170
138 170
139 183
138 183
153 187
152 187
153 210
152 210
156 212
155 212
166 237
165 237
173 243
172...

result:

ok moves = 8086

Test #21:

score: 0
Accepted
time: 2190ms
memory: 10152kb

input:

100002 40466
BBBBBBBCCBCBCCBCBBBBCCBBCBBBBBBBBBBCBBBBCBBBBBCBBBBBBBBBCBBBCBBBCCBCBCBBBBBBCBBBBBBBCBBBBBCBBBBCBCBCBBBBBBBBCBBBBBBBBCBCBBBBCBBBBBBBBBBBBBCBCBBCBBBBBBBBBBBCBBBBBBBCBCBCBCBBBBBBBBCBCBBBBBBBBCBBBBBBBBCBCCBBBCCBBCBBCBBBBBBBBBBCBBBCBBBBBBBBBBBBCBBCCBBCBBCBBBBCBBBBCBBBCCBBBCBBBBBBBCBBBBCBBBC...

output:

45728
9 3
8 3
9 4
8 4
10 22
9 22
11 35
10 35
11 37
10 37
12 42
11 42
16 43
15 43
16 47
15 47
18 62
17 62
28 64
27 64
32 65
31 65
37 74
36 74
46 76
45 76
49 79
48 79
52 84
51 84
52 96
51 96
53 108
52 108
54 109
53 109
60 111
59 111
67 113
66 113
72 128
71 128
76 130
75 130
77 136
76 136
78 139
77 139...

result:

ok moves = 45728

Test #22:

score: -100
Time Limit Exceeded

input:

233338 159967
CCBCBBCCCCBBCCCCCCCCBCCCBCCCCBCCBCCCCCCCCCBCBCCBBCBBCCCCBCCCCCCCCCCCCCCCCCCCBCCBCCBBCBCCBBBCCBCCCCBBCCCBCCCCCCCCCCCBCCBCCCCCCCCBCCCBBCBCCCBCCCCCBCCBCCBCCCCCCCBCCCCCBCCBBCCCCCCCBCCCCCCCCBBBCCCCCCCCCCCCBBBCCCBBCCBCBCCCCCCCCCBCCCCBCCCCCCCCBBCCCCBCCCCBCCCBCCCBCCCCCBCCCCCBBCCCBCCCCCCCCCCCCC...

output:


result: