QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#407750 | #4252. Permutation | zhaohaikun# | 10 | 856ms | 4180kb | C++20 | 1.9kb | 2024-05-09 10:37:41 | 2024-05-09 10:37:42 |
Judging History
answer
#include "perm.h"
// MagicDark
#include <bits/stdc++.h>
#define debug cerr << "\033[32m[" << __LINE__ << "]\033[0m "
#define SZ(x) ((int) x.size() - 1)
#define all(x) x.begin(), x.end()
#define ms(x, y) memset(x, y, sizeof x)
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define DF(i, x, y) for (int i = (x); i >= (y); i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T> T& chkmax(T& x, T y) {return x = max(x, y);}
template <typename T> T& chkmin(T& x, T y) {return x = min(x, y);}
template <typename T> T& read(T &x) {
x = 0; int f = 1; char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x *= f;
}
mt19937 mrand(chrono::steady_clock::now().time_since_epoch().count());
inline int rnd(int l, int r) {return mrand() % (r - l + 1) + l;}
vector <int> solve(ll n) {
vector <int> ans;
DF(i, 60, 1) {
ll w = (1ll << i) - 1;
while (n >= w) {
for (int& j: ans) j += i;
F(j, 1, i) ans.push_back(j - 1);
n -= w;
}
}
return ans;
}
int dp[1010];
int calc(vector <int> x) {
int s = 0;
F(i, 0, SZ(x)) {
dp[i] = 1;
F(j, 0, i - 1) {
if (x[j] < x[i]) {
dp[i] += dp[j];
}
}
s += dp[i];
}
return s;
}
std::vector<int> construct_permutation(long long n) {
n--;
vector <int> ans;
// if (n <= 90) {
// F(i, 1, n) ans.push_back(n - i);
// return ans;
// }
ans = solve(n);
F(i, 1, 20) {
vector <int> t(i);
F(j, 1, i) t[j - 1] = j - 1;
// do {
F(j, 1, 100) {
shuffle(all(t), mrand);
int v = calc(t);
// debug << v << endl;
if (n >= v) {
vector <int> w = solve(n - v);
if (w.size() + i < ans.size()) {
ans.clear();
for (int j: t) ans.push_back(j + w.size());
for (int j: w) ans.push_back(j);
}
}
}
// } while (next_permutation(all(t)));
}
return ans;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 72ms
memory: 3976kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 89 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 1 0 2 1 0 2 0 1 3 1 2 0 3 1 0 2 4 2 3 0 1 3 0 1 2 4 1 2 3 0 4 2 0 1 3 5 2 3 4 0 1 4 1 0 2 3 5 1 2 4 3 0 5 1 4 0 2 3 5 1 0 3 4 2 4 0 1 2 3 5 1 2 3 4 0 5 0 2 3 4 1 6 2 3 4 5 0 1 5 0 1 3 4 2 6 2 3 1 4 5 0 6 0 2 4 5 3 1 6 1 3 0 4 5 2 5 0 2 1 3 4 6 1 3 2 4 5 0 6 4 ...
result:
ok
Subtask #2:
score: 0
Time Limit Exceeded
Test #2:
score: 88.3333
Acceptable Answer
time: 147ms
memory: 3844kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 39993 85709 48645 25391 15360 54084 28947 18808 86735 316 14357 82845 96210 16242 58466 43439 77462 70742 76176 20397 30314 22634 29622 81835 31904 81283 37072 36527 26764 55878 72762 5262 34915 63468 20595 66579 77373 36670 89340 83384 73268 31960 67318 3908...
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 56 49 50 52 51 55 53 54 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 22 23 24 25 26 27 28 29 30 31 32 33 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 0 64 46 58 49 50 55 52 45 53 44 48 51 54 62 56 47 60 57 63 59 61 28 29 30 31 32 33 34 35 36 37 38 39 ...
result:
points 0.98148148150
Test #3:
score: 75.7692
Acceptable Answer
time: 200ms
memory: 3856kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 2147483647 1073741823 536870911 268435455 134217727 67108863 33554431 16777215 8388607 4194303 2097151 1582 24319 38 463 7 1073741503 3 18 3 3780 2 24934 124910 65535 154 1069539071 209452285 1662 3 3 93 4070 131071 502986749 3164 268430159 247 21746 124927 1...
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 60 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 58 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ...
result:
points 0.84188034190
Test #4:
score: 61.5385
Acceptable Answer
time: 830ms
memory: 4000kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 576460752303423487 288230376151711743 144115188075855871 72057594037927935 36028797018963967 18014398509481983 9007199254740991 4503599627370495 2251799813685247 1125899906842623 562949953421311 8166608599550 16508780543 33554427 43000192155799 62353919 71773...
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 116 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2...
result:
points 0.68376068380
Test #5:
score: 73.5077
Acceptable Answer
time: 504ms
memory: 3928kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 336455856505 197522918480 260689715591 857530435844 89809708292 207893569808 702779448503 917149928374 643600357316 927175148543 51879726697 974331197849 721971572596 902469653832 936157710917 714588060426 276939435899 393954173900 692525720126 762289367234 1...
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 376 362 364 359 358 363 368 357 369 374 361 360 365 366 367 370 371 372 375 373 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 284 285 286 287 288 289 290 ...
result:
points 0.81675213680
Test #6:
score: 69.4
Acceptable Answer
time: 856ms
memory: 4180kb
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 330061280882697 570108406837011 246465711199350 844437948491708 542197441405836 481743322695013 913237337833838 634038564781156 969749245791701 445335878892049 722391184659757 25600568975288 304176471716316 934030664268458 770565383569314 38589802113902 56387...
output:
6cad0f33-b1bd-3a3e-1a8d-c4af23adfcbf OK 458 453 454 455 457 456 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 360 361 362 363 364 365 366 367 368 369 370 ...
result:
points 0.77111111110
Test #7:
score: 0
Time Limit Exceeded
input:
a92b3f80-b312-8377-273c-3916024d7f2a 100 9808783958425241 800256975993528789 891794666437715812 154809014071580277 262143300778136084 508038278751820218 855062810898478629 196129157832150290 519747744582635554 544132224659269080 335568667826635843 978219202156109836 887928188166976766 57068450616591...
output:
Unauthorized output