QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#137464 | #2351. Lost in Transfer | Delay_for_five_minutes# | 0 | 6ms | 3648kb | C++20 | 4.9kb | 2023-08-10 12:58:30 | 2023-08-10 12:58:31 |
Judging History
answer
#include<bits/stdc++.h>
const int P = 7079;
int t[11],vis[11];
int fac[11];
int getnumber(std::vector<int>::iterator p) {
for(int i=0;i<10;i++) {
t[i] = p[i];
}
int ans = 0;
for(int i=0;i<10;i++) {
int cnt = 0;
for(int j=i+1;j<10;j++) {
if (t[i] > t[j]) cnt ++;
}
ans += cnt * fac[10 - i - 1];
}
// printf("%d\n",ans);
return ans;
}
std::vector<int> reorder(std::vector<int> vt,int num) {
std::vector<int> ans;
std::sort(vt.begin(),vt.end());
bool vis[11];
memset(vis,0,sizeof vis);
for(int i=0;i<10;i++) {
int k = 0;
while(num >= fac[10 - i - 1]) {
k ++;
num -= fac[10 - i - 1];
}
for(int j=0;j<10;j++) if (!vis[j]) {
if (k == 0) {
ans.push_back(vt[j]);
vis[j] = 1;
break;
}
k--;
}
}
return ans;
}
std::mt19937 rnd(time(0));
namespace Alice {
int m;
bool doit(std::vector<int>& a) {
int A = getnumber(a.begin()), B = getnumber(a.begin() + a.size() - 10);
if (A % P != 0) {
std::swap(A,B);
}
return (((A % P == 0) && (B % P == 0) && (A==B)) || (A % P != 0) || (B % P != 0));
}
bool check(std::vector<int> vt) {
for(int i=0;i<10;i++) {
int tmp = vt[i];
vt.erase(i + vt.begin());
if (!doit(vt)) return 0;
vt.insert(vt.begin() + i, tmp);
}
for(int i=vt.size() - 10;i<vt.size();i++) {
int tmp = vt[i];
vt.erase(i + vt.begin());
if (!doit(vt)) return 0;
vt.insert(vt.begin() + i, tmp);
}
return 1;
}
void solve() {
std::vector<int> a;
std::cin >> m;
std::vector<int> vt1,vt2,vt;
int r = 0;
for(int i=1;i<=m;i++) {
int x;
std::cin >> x;
a.push_back(x);
}
do{
vt1.clear(),vt2.clear();
vt.clear();
for(int i=1;i<=m;i++) {
int x = a[i-1];
r ^= x;
bool tag1 = 1,tag2 = 1;
for(auto j : vt1) {
if (j == x) tag1 = 0;
}
for(auto j : vt2) {
if (j == x) tag2 = 0;
}
if (vt1.size() < 10 && tag1) vt1.push_back(x);
else if (vt2.size() < 10 && tag2) vt2.push_back(x);
else vt.push_back(x);
}
// std::cerr << r << std::endl;
// std::cerr << r * P << std::endl;
vt1 = reorder(vt1,r * P);
vt2 = reorder(vt2,r * P);
std::vector<int> res;
for(auto i:vt1) {
res.push_back(i);
}
for(auto i:vt) {
res.push_back(i);
}
for(auto i:vt2) {
res.push_back(i);
}
if (check(res)) break;
for(int i = 0;i < a.size();i++) std::swap(a[i] , a[rnd()%(i + 1)]);
}while(1);
for(auto i:vt1) {
std::cout << i << " ";
}
for(auto i:vt) {
std::cout << i << " ";
}
for(auto i:vt2) {
std::cout << i << " ";
}
std::cout << std::endl;
}
void Alice() {
int T;
std::cin >> T;
while(T--) {
solve();
}
}
}
namespace Bob {
void solve() {
std::vector<int> a;
int m;
std::cin >> m;
int r = 0;
for(int i=0;i<m;i++) {
int x;
std::cin >> x;
r ^= x;
a.push_back(x);
}
int A = getnumber(a.begin()), B = getnumber(a.begin() + m - 10);
if (A % P != 0) {
std::swap(A,B);
}
assert(((A % P == 0) && (B % P == 0) && (A==B)) || (A % P != 0) || (B % P != 0));
if (A == B) {
for(auto i:a) {
std::cout << i << " ";
}
if (r != A / P) {
std::cout << ((A / P) ^ r) << "\n";
}
else {
std::cout << "\n";
}
}
else {
for(auto i:a) {
std::cout << i << " ";
}
std::cout << (r ^ (A/P)) << "\n";
}
}
void Bob() {
int T;
std::cin >> T;
while(T--) {
solve();
}
}
}
int main() {
// freopen("in.txt","r",stdin);
fac[0] = 1;
for(int i=1;i<=10;i++) fac[i] = fac[i-1] * i;
std::string str;
std::cin >> str;
if (str == "transmit") {
// freopen("out.txt","w",stdout);
Alice::Alice();
}
else {
// freopen("out.txt","r",stdin);
Bob::Bob();
}
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3648kb
input:
transmit 2 20 97 388 459 467 32 99 98 296 403 325 330 271 87 333 378 267 405 58 426 374 20 125 481 451 150 495 136 444 192 118 26 68 281 120 61 494 339 86 292 100 32
output:
98 325 99 296 403 467 388 459 97 32 267 333 271 330 378 426 374 405 87 58 26 481 495 125 150 444 118 192 451 136 32 339 494 68 100 281 61 120 292 86
input:
recover 2 19 98 325 99 296 403 467 388 459 97 32 267 333 271 330 378 426 374 405 87 19 26 481 495 125 444 118 192 451 136 32 339 494 68 100 281 61 120 292 86
output:
98 325 99 296 403 467 388 459 97 32 267 333 271 330 378 426 374 405 87 58 26 481 495 125 444 118 192 451 136 32 339 494 68 100 281 61 120 292 86 150
result:
ok all correct (2 test cases)
Test #2:
score: 100
Accepted
time: 2ms
memory: 3532kb
input:
transmit 1 20 158 220 174 224 137 134 339 175 147 122 480 26 151 266 474 144 451 301 105 188
output:
122 134 137 147 158 174 175 220 224 339 26 105 144 151 188 266 301 451 474 480
input:
recover 1 19 122 134 137 147 158 174 175 220 224 339 26 105 144 151 188 266 301 451 474
output:
122 134 137 147 158 174 175 220 224 339 26 105 144 151 188 266 301 451 474 480
result:
ok all correct (1 test case)
Test #3:
score: 100
Accepted
time: 2ms
memory: 3512kb
input:
transmit 1 100 170 478 377 395 397 329 488 424 11 337 249 156 489 244 386 400 81 195 264 272 491 24 280 422 365 382 354 91 23 148 469 196 287 191 368 436 132 84 43 126 451 28 94 61 34 301 104 309 127 116 44 82 21 312 222 294 186 112 210 161 261 131 484 219 430 271 310 184 67 149 119 291 125 267 449 ...
output:
337 488 478 424 377 170 329 397 395 11 491 24 280 422 365 382 354 91 23 148 469 196 287 191 368 436 132 84 43 126 451 28 94 61 34 301 104 309 127 116 44 82 21 312 222 294 186 112 210 161 261 131 484 219 430 271 310 184 67 149 119 291 125 267 449 74 383 252 256 372 143 323 334 331 15 460 236 339 410 ...
input:
recover 1 99 337 488 478 424 377 170 329 397 395 11 491 24 280 422 365 382 354 91 23 148 469 196 287 191 368 436 132 84 43 126 451 28 94 61 34 301 104 309 127 116 44 82 21 312 222 294 186 112 210 161 261 131 484 219 430 271 310 184 67 149 119 291 125 267 449 74 383 252 256 372 143 323 334 331 15 460...
output:
337 488 478 424 377 170 329 397 395 11 491 24 280 422 365 382 354 91 23 148 469 196 287 191 368 436 132 84 43 126 451 28 94 61 34 301 104 309 127 116 44 82 21 312 222 294 186 112 210 161 261 131 484 219 430 271 310 184 67 149 119 291 125 267 449 74 383 252 256 372 143 323 334 331 15 460 236 339 410 ...
result:
ok all correct (1 test case)
Test #4:
score: 100
Accepted
time: 2ms
memory: 3524kb
input:
transmit 9 20 130 404 101 44 439 315 251 150 63 463 202 322 48 139 15 276 212 332 238 46 30 470 31 62 452 226 135 150 419 30 380 494 32 386 179 253 451 106 384 116 197 80 133 474 151 293 104 54 350 334 433 40 197 419 332 235 451 154 411 319 78 10 474 125 377 93 336 385 256 188 395 66 449 363 94 223 ...
output:
315 63 439 251 150 101 463 44 130 404 238 46 322 212 202 48 332 15 139 276 470 62 30 150 380 31 226 135 452 419 80 133 474 151 293 104 54 350 334 433 494 116 32 197 384 106 253 179 451 386 419 451 235 319 411 10 332 154 197 78 449 363 94 223 171 313 430 444 214 448 245 479 38 105 312 418 337 445 5...
input:
recover 9 19 315 63 439 251 150 101 463 44 130 404 238 46 322 212 202 48 332 15 139 29 470 62 30 150 380 31 226 135 452 419 80 133 474 151 104 54 350 334 433 494 116 32 197 384 106 253 179 451 386 39 419 451 235 319 411 10 332 154 197 78 449 363 94 223 171 313 430 444 214 448 245 479 38 312 418 33...
output:
315 63 439 251 150 101 463 44 130 404 238 46 322 212 202 48 332 15 139 276 470 62 30 150 380 31 226 135 452 419 80 133 474 151 104 54 350 334 433 494 116 32 197 384 106 253 179 451 386 293 419 451 235 319 411 10 332 154 197 78 449 363 94 223 171 313 430 444 214 448 245 479 38 312 418 337 445 57 259 ...
result:
ok all correct (9 test cases)
Test #5:
score: 100
Accepted
time: 6ms
memory: 3588kb
input:
transmit 81 100 345 473 156 472 449 361 478 451 332 324 120 264 105 37 287 102 369 417 331 458 284 55 25 115 279 489 257 468 463 200 174 431 408 492 411 227 140 303 89 35 12 371 169 139 485 480 20 373 220 211 330 138 228 466 432 44 166 80 443 24 92 21 160 376 351 190 214 173 132 322 163 340 7 282 40...
output:
156 449 478 345 332 472 473 361 324 451 284 55 25 115 279 489 257 468 463 200 174 431 408 492 411 227 140 303 89 35 12 371 169 139 485 480 20 373 220 211 330 138 228 466 432 44 166 80 443 24 92 21 160 376 351 190 214 173 132 322 163 340 7 282 409 498 114 207 347 193 77 233 476 53 275 358 151 71 38 4...
input:
recover 81 99 156 449 478 345 332 472 473 361 324 451 284 55 25 115 279 489 257 468 463 200 174 431 408 492 411 227 140 303 89 35 12 371 169 139 485 480 20 373 220 211 330 138 228 466 432 44 166 80 443 24 92 21 160 376 351 190 214 173 132 322 163 340 7 282 409 498 114 207 347 193 77 233 476 53 275 3...
output:
156 449 478 345 332 472 473 361 324 451 284 55 25 115 279 489 257 468 463 200 174 431 408 492 411 227 140 303 89 35 12 371 169 139 485 480 20 373 220 211 330 138 228 466 432 44 166 80 443 24 92 21 160 376 351 190 214 173 132 322 163 340 7 282 409 498 114 207 347 193 77 233 476 53 275 358 151 71 38 4...
result:
ok all correct (81 test cases)
Test #6:
score: 0
Wrong Answer
time: 6ms
memory: 3580kb
input:
transmit 1000 20 190 119 5 459 482 162 315 20 210 253 394 444 209 263 382 164 307 457 273 145 20 333 218 169 299 282 401 231 287 486 238 348 128 92 359 142 235 351 368 470 418 20 498 139 5 3 299 275 476 231 402 241 359 53 179 73 335 370 481 184 442 343 20 180 47 216 149 468 94 473 392 264 104 193 63...
output:
5 119 162 459 315 482 210 253 190 20 145 209 263 444 394 457 307 382 273 164 238 299 218 169 282 333 287 401 486 231 235 359 128 92 348 368 351 418 470 142 299 5 476 275 241 139 498 3 231 402 359 73 442 343 335 179 481 53 184 370 104 216 180 468 149 473 264 392 47 94 75 249 193 456 106 480 350 42...
input:
recover 1000 19 5 119 162 459 315 482 210 253 190 20 145 209 263 444 394 457 307 382 273 19 238 299 218 169 333 287 401 486 231 235 359 128 92 348 368 351 418 470 142 20 299 5 476 275 241 139 498 3 231 402 359 73 442 343 335 179 481 53 184 370 19 104 216 180 468 149 473 264 392 47 75 249 193 456 ...
output:
5 119 162 459 315 482 210 253 190 20 145 209 263 444 394 457 307 382 273 164 238 299 218 169 333 287 401 486 231 235 359 128 92 348 368 351 418 470 142 282 299 5 476 275 241 139 498 3 231 402 359 73 442 343 335 179 481 53 184 370 104 216 180 468 149 473 264 392 47 75 249 193 456 106 480 350 423 26 ...
result:
wrong answer incorrect answer. (test case 801)