QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#486976 | #437. Fun Tour | Dimash | 100 ✓ | 86ms | 20024kb | C++23 | 3.9kb | 2024-07-22 14:30:15 | 2024-07-22 14:30:15 |
Judging History
answer
#include "fun.h"
#include <bits/stdc++.h>
using namespace std;
int n,q;
int find_cen(){
vector<pair<int,int>> a;
for(int i = 1;i < n;i++){
int s = attractionsBehind(0,i);
if(s*2 >= n){
a.emplace_back(s,i);
}
}
if(a.empty()) return 0;
sort(a.begin(),a.end());
return a[0].second;
}
const int N = 1e5 + 12;
int val[N];
vector<int> createFunTour(int nn, int qq) {
if(nn == 2){
return {0,1};
}
n = nn;q = qq;
int c = find_cen();
array<int,3> ver = {-1,-1,-1};
array<vector<pair<int,int>>,3> vec;
for(int i = 0;i < n;i++){
if(i == c) continue;
val[i] = hoursRequired(c,i);
if(val[i] == 1){
for(int j = 0;j < 3;j++){
if(ver[j] == -1){
ver[j] = i;
break;
}
}
}
}
vector<int> res;
for(int i = 0;i < n;i++){
if(i == c) continue;
if(val[i] == 1){
if(i == ver[0]){
vec[0].push_back({1,i});
}else if(i == ver[1]){
vec[1].push_back({1,i});
}else{
vec[2].push_back({1,i});
}
continue;
}
int _ = -1;
for(int k = 0;k < 2;k++){
if(val[i] - 1 == hoursRequired(i,ver[k])){
_=k;
break;
}
}
if(_ == -1) _ = 2;
vec[_].push_back({val[i],i});
}
int lst = -1;
for(int i = 0;i < 3;i++){
sort(vec[i].begin(),vec[i].end());
}
vector<int> io;
for(int i = 0;i < n;i++){
io.push_back(i);
}
while(true){
int _x = (int)vec[0].size(),_y = (int)vec[1].size(),_z = (int)vec[2].size();
if(_x == _y + _z || _y == _x + _z || _z == _x + _y){
break;
}
if(!_x || !_y || !_z){
int mx = max({_x,_y,_z});
for(int i = 0;i < 3;i++){
if((int)vec[i].size() == mx){
lst = i;
res.push_back(vec[i].back().second);
vec[i].pop_back();
break;
}else{
assert((int)vec[i].size() == 0 || (int)vec[i].size() == mx - 1);
}
}
break;
}
pair<int,int> mx = {-1,-1};
int id = -1;
auto upd = [&](vector<pair<int,int>> &a,int j){
if(j != lst && (int)a.size()){
pair<int,int> nv = make_pair(a.back().first,(int)a.size());
if(nv > mx){
mx = nv;
id = j;
}
}
};
auto del = [&](vector<pair<int,int>> &x){
res.push_back(x.back().second);
x.pop_back();
};
int cc = 0;
for(int i = 0;i < 3;i++){
if((int)vec[i].empty()) cc++;
upd(vec[i],i);
}
lst = id;
del(vec[id]);
}
vector<int> X,Y;
vector<pair<int,int>> bff;
for(int i = 0;i < 3;i++){
bff.push_back({(int)vec[i].size(),i});
}
sort(bff.begin(),bff.end());
bool ok = false;
for(int i = 0;i < 3;i++){
int j = bff[i].second;
if(i < 2){
if(lst == j) ok = 1;
for(auto f:vec[j]){
X.push_back(f.second);
}
}else{
for(auto f:vec[j]){
Y.push_back(f.second);
}
}
}
if(ok){
X.swap(Y);
}
auto cmp = [&](int x,int y)->bool{
return val[x] > val[y];
};
sort(X.begin(),X.end(),cmp);
sort(Y.begin(),Y.end(),cmp);
for(int i = 0;i < (int)X.size();i++){
res.push_back(X[i]);
res.push_back(Y[i]);
}
res.push_back(c);
return res;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Accepted
Test #1:
score: 0
Accepted
time: 0ms
memory: 3788kb
input:
2 400000 1 0
output:
0 1
result:
ok correct
Subtask #2:
score: 0
Accepted
Test #3:
score: 0
Accepted
time: 0ms
memory: 3812kb
input:
4 400000 1 0 2 0 3 1
output:
2 3 0 1
result:
ok correct
Subtask #3:
score: 0
Accepted
Test #9:
score: 0
Accepted
time: 0ms
memory: 3872kb
input:
4 400000 1 0 2 1 3 2
output:
0 3 1 2
result:
ok correct
Subtask #4:
score: 0
Accepted
Test #13:
score: 0
Accepted
time: 0ms
memory: 3884kb
input:
4 400000 0 1 0 2 0 3
output:
1 3 2 0
result:
ok correct
Subtask #5:
score: 0
Accepted
Test #20:
score: 0
Accepted
time: 0ms
memory: 3816kb
input:
18 400000 1 0 2 0 3 1 4 1 5 2 6 2 7 3 8 3 9 4 10 4 11 5 12 5 13 6 14 6 15 7 16 7 17 8
output:
14 17 13 16 12 15 11 8 6 10 5 7 2 9 0 4 3 1
result:
ok correct
Subtask #6:
score: 0
Accepted
Test #27:
score: 0
Accepted
time: 0ms
memory: 4092kb
input:
18 400000 7 6 8 7 5 8 4 5 3 4 9 3 10 11 12 10 13 12 14 13 9 14 2 9 15 2 16 15 17 16 1 17 0 1
output:
0 6 1 7 11 17 8 10 16 5 12 15 4 13 2 14 3 9
result:
ok correct
Subtask #7:
score: 0
Accepted
Test #33:
score: 0
Accepted
time: 1ms
memory: 4164kb
input:
500 400000 33 414 398 33 254 398 400 254 376 400 302 376 466 302 362 466 301 362 267 301 417 267 413 417 14 413 305 14 353 305 83 353 227 83 57 227 446 57 406 446 154 406 336 154 195 336 405 195 264 405 76 264 203 76 459 203 178 459 72 178 296 72 488 296 404 488 60 404 156 60 393 156 108 393 216 108...
output:
212 414 88 33 124 398 399 254 190 400 10 376 366 302 234 466 432 362 28 301 188 267 237 417 64 413 268 14 39 305 349 353 345 83 125 227 70 57 276 446 420 406 369 154 48 336 211 195 482 405 8 264 22 76 487 203 9 459 230 178 339 72 95 296 340 488 50 404 102 60 174 156 47 393 461 108 424 216 181 106 13...
result:
ok correct
Subtask #8:
score: 0
Accepted
Test #41:
score: 0
Accepted
time: 1ms
memory: 4148kb
input:
501 400000 1 0 2 0 3 1 4 1 5 2 6 2 7 3 8 3 9 4 10 4 11 5 12 5 13 6 14 6 15 7 16 7 17 8 18 8 19 9 20 9 21 10 22 10 23 11 24 11 25 12 26 12 27 13 28 13 29 14 30 14 31 15 32 15 33 16 34 16 35 17 36 17 37 18 38 18 39 19 40 19 41 20 42 20 43 21 44 21 45 22 46 22 47 23 48 23 49 24 50 24 51 25 52 25 53 26 ...
output:
500 318 499 382 498 317 497 381 496 316 495 380 494 315 493 379 492 314 491 378 490 313 489 377 488 312 487 376 486 311 485 375 484 310 483 374 482 309 481 373 480 308 479 372 478 307 477 371 476 306 475 370 474 305 473 369 472 304 471 368 470 303 469 367 468 302 467 366 466 301 465 365 464 300 463 ...
result:
ok correct
Subtask #9:
score: 0
Accepted
Test #51:
score: 0
Accepted
time: 1ms
memory: 3924kb
input:
1000 400000 6 5 7 8 6 7 9 6 11 10 11 12 13 11 14 15 13 14 9 13 16 9 18 17 18 19 20 18 22 21 22 23 20 22 24 20 26 25 26 27 28 26 30 29 30 31 28 30 24 28 16 24 32 16 33 32 35 34 35 36 37 35 39 38 39 40 37 39 41 37 43 42 43 44 45 43 47 46 47 48 45 47 41 45 49 41 50 51 52 50 54 53 54 55 52 54 56 52 58 5...
output:
448 811 446 808 444 806 442 804 440 802 438 799 436 796 434 790 432 788 430 786 428 784 426 782 424 780 422 777 420 773 414 771 412 768 410 764 408 761 406 758 404 754 402 752 400 749 398 747 396 745 391 735 389 733 385 731 383 729 381 727 379 725 357 722 355 717 353 715 351 713 349 711 347 709 345 ...
result:
ok correct
Subtask #10:
score: 0
Accepted
Test #59:
score: 0
Accepted
time: 86ms
memory: 20024kb
input:
99999 400000 11681 58292 11681 63929 49752 11681 30596 74400 30596 39261 49752 30596 19390 49752 89694 31923 19390 89694 54297 19390 42389 12902 42389 60328 72803 42389 69881 43761 69881 95741 72803 69881 96271 72803 63872 20658 63872 93588 35833 63872 48418 44153 35833 48418 96271 35833 54297 96271...
output:
33669 33779 33633 33736 33635 33745 33636 33747 33639 33753 33648 33754 33651 33758 33652 33761 33655 33765 33659 33770 33661 33772 33662 33774 33628 33734 33674 33785 33675 33786 33676 33792 33679 33796 33685 33798 33686 33799 33692 33800 33694 33801 33697 33805 33701 33806 33703 33814 33565 33665 ...
result:
ok correct
Subtask #11:
score: 10
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
100%
Accepted
Subtask #12:
score: 16
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
100%
Accepted
Dependency #5:
100%
Accepted
Dependency #6:
100%
Accepted
Dependency #7:
100%
Accepted
Subtask #13:
score: 21
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #5:
100%
Accepted
Dependency #8:
100%
Accepted
Subtask #14:
score: 19
Accepted
Dependency #1:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #6:
100%
Accepted
Dependency #9:
100%
Accepted
Subtask #15:
score: 34
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
100%
Accepted
Dependency #5:
100%
Accepted
Dependency #6:
100%
Accepted
Dependency #7:
100%
Accepted
Dependency #8:
100%
Accepted
Dependency #9:
100%
Accepted
Dependency #10:
100%
Accepted
Dependency #11:
100%
Accepted
Dependency #12:
100%
Accepted
Dependency #13:
100%
Accepted
Dependency #14:
100%
Accepted
Extra Test:
score: 0
Extra Test Passed