QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#217197#5113. Bridgeucup-team1001RE 66ms521992kbC++202.0kb2023-10-16 16:33:262023-10-16 16:33:26

Judging History

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

  • [2023-10-16 16:33:26]
  • 评测
  • 测评结果:RE
  • 用时:66ms
  • 内存:521992kb
  • [2023-10-16 16:33:26]
  • 提交

answer

#include<bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;

#define irep(i,l,r) for(int i = l; i <= r; ++ i)

const int N = 100099;
const int len = 370;
const int K = N / len + 50;
int per[N][655],invp[N][655];


struct stak{
	int tot;
	int opt[805][2];
	stak(){tot = 0;}
	void push(int x,int y){
		opt[++ tot][0] = x, opt[tot][1] = y;
	}
	void top(int &x, int &y){
		x = opt[tot][0], y = opt[tot][1];
	}
	void pop(){
		-- tot;
	}
	int size(){
		return tot;
	}
};

stak p[1055];

// clo, line
inline int read(){
	char ch = getchar();
	int s = 0;
	while(!isdigit(ch))ch = getchar();
	while(isdigit(ch))s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();
	return s;
}
int main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n = read(), m = read(), q = read();
	
	for(int c = 0; c <= m / len; c ++){
		for(int i = 1; i <= n; ++ i){
			per[i][c] = invp[i][c] = i;
		}
	}
	while(q --){
		int op = read();
		if(op == 1){
			int line = read(), cloumn = read();
			int x = cloumn / len;
//			array<int, 2> PI = {cloumn, line};
			stak temp;
			
			while(p[x].size()){
				int c, l;
				p[x].top(c, l);
//				auto [c, l] = p[x].top();
				if(c < cloumn)break;
				int tx, ty;
				p[x].top(tx, ty);
//				temp.push(p[x].top());
				temp.push(tx, ty);
				
				per[invp[l][x]][x] = l + 1;
				per[invp[l + 1][x]][x] = l;
				swap(invp[l][x], invp[l + 1][x]);
				p[x].pop();
			}
			temp.push(cloumn, line);
			
			while(temp.size()){
				int c, l;
				temp.top(c, l);
				
				per[invp[l][x]][x] = l + 1;
				per[invp[l + 1][x]][x] = l;
				swap(invp[l][x], invp[l + 1][x]);
				int tx, ty;
				temp.top(tx, ty);
//				temp.push(p[x].top());
				p[x].push(tx, ty);
				
				temp.pop();
			}
		}
		else{
			int a = read();
			for(int x = 0; x <= m / len; ++ x){
				a = per[a][x];
			}
			cout << a << '\n';
		}
	}
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 12504kb

input:

3 4 13
2 2
1 1 3
2 1
2 2
2 3
1 2 4
2 1
2 2
2 3
1 2 1
2 1
2 2
2 3

output:

2
2
1
3
3
1
2
3
2
1

result:

ok 10 numbers

Test #2:

score: 0
Accepted
time: 60ms
memory: 12656kb

input:

3 100000 99997
2 2
2 2
2 3
2 3
2 3
2 3
2 3
1 2 11047
1 1 98732
1 2 90045
1 1 43556
2 1
2 3
1 2 17242
1 1 17027
2 1
1 1 94195
2 1
2 2
2 1
2 3
1 1 34124
1 2 14354
1 2 673
1 2 39812
1 2 35520
1 2 16046
2 3
2 2
1 1 25410
2 3
2 1
2 3
2 2
1 2 55684
2 1
1 2 24811
1 2 92268
1 2 60268
2 2
1 1 89272
1 2 19232...

output:

2
2
3
3
3
3
3
3
2
1
2
1
2
3
3
1
1
2
1
3
3
2
1
3
2
1
2
1
2
2
2
2
1
1
2
1
3
2
1
3
2
1
3
2
2
1
3
3
2
3
2
3
1
2
1
1
2
3
2
1
3
2
3
2
3
2
2
1
1
2
1
1
2
3
2
1
1
3
1
1
2
2
3
2
2
1
1
1
2
3
3
1
1
2
1
1
3
1
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
1
2
1
1
3
2
3
2
2
2
1
1
1
3
3
3
2
1
1
3
3
3
1
1
2
3
2
3
3
3
3
2
3
...

result:

ok 60761 numbers

Test #3:

score: 0
Accepted
time: 11ms
memory: 521992kb

input:

100000 5 20
1 40277 1
2 55431
2 22404
2 29137
2 10206
2 72758
2 92880
1 96104 2
2 12641
1 99618 2
2 88481
1 76531 3
1 91957 5
1 23999 2
2 35922
1 69730 5
1 16353 2
1 90312 1
1 75264 5
2 77283

output:

55431
22404
29137
10206
72758
92880
12641
88481
35922
77283

result:

ok 10 numbers

Test #4:

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

input:

3 5 20
2 3
1 2 2
2 3
1 1 4
2 1
1 2 5
1 1 1
2 1
2 2
2 1
2 1
2 2
2 3
2 3
2 1
2 1
2 1
2 3
2 2
2 3

output:

3
2
2
2
3
2
2
3
1
1
2
2
2
1
3
1

result:

ok 16 numbers

Test #5:

score: 0
Accepted
time: 66ms
memory: 14312kb

input:

200 100000 99995
1 180 45150
2 137
1 97 78979
1 14 74747
1 151 41036
1 178 88736
1 26 50618
1 132 72623
1 95 37475
2 184
1 31 44675
1 183 14874
1 66 14597
2 191
2 102
1 27 61558
1 36 39304
2 119
2 185
1 156 50000
2 200
2 152
1 17 51778
1 39 39403
2 168
1 50 67213
1 92 56771
2 28
2 196
1 99 29006
2 4...

output:

137
184
191
102
119
185
200
151
168
27
196
43
73
16
28
64
88
106
139
117
90
131
64
64
107
11
38
149
133
184
166
20
95
185
71
85
151
96
106
103
91
45
195
112
82
113
183
178
47
112
12
185
41
153
77
179
44
165
84
111
192
161
144
33
139
9
37
38
177
45
146
83
88
166
1
180
175
180
12
166
186
44
2
115
124
...

result:

ok 50281 numbers

Test #6:

score: -100
Runtime Error

input:

200 100 100000
1 192 88
1 13 2
2 131
1 80 44
1 11 74
1 159 89
1 29 91
1 81 62
1 159 21
1 37 34
2 169
2 163
1 164 50
1 104 45
1 81 46
1 176 73
1 68 59
2 117
2 152
2 189
1 125 4
2 45
1 120 59
2 30
2 113
1 74 15
1 147 71
1 31 47
2 179
2 118
2 34
2 61
1 41 32
2 153
1 186 28
2 113
2 55
2 24
2 92
2 72
2 8...

output:

131
169
163
117
152
189
45
29
113
179
118
34
61
153
113
55
24
92
72
8
152
85
174
188
18
158
152
164
101
156
79
81
146
15
94
90
23
81
200
153
181
181
135
31
145
44
88
143
11
134
25
80
183
79
187
29
92
195
123
76
14
135
28
193
116
33
179
76
45
169
91
85
141
138
166
195
53
117
127
86
84
101
132
115
1
9...

result: