ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#200946 | #3478. select | pipibob | 100 | 570ms | 24584kb | C++ | 1.7kb | 2024-01-14 11:41:59 | 2024-01-14 12:26:38 |
answer
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
int n, k, idx[1000050], maxn, len, tmp;
struct node1
{
int pre, data, nxt;
}a[1000050];
struct node2
{
int id;
bool vis;
}b[1000050];
int read()
{
int x = 0, f = 1;
char ch = getchar();
while(ch < '0' || ch > '9')
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = (x << 3) + (x << 1) + (ch ^ 48);
ch = getchar();
}
return x * f;
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("输入.in","r",stdin);
// freopen("输出.out","w",stdout);
#endif
n = read(), k = read();
maxn = n, len = n;
for(int i = 1 ; i <= n ; i++)
{
a[i].data = read(), a[i].pre = i - 1, a[i].nxt = i + 1;
b[a[i].data].vis = true, b[a[i].data].id = i;
}
a[1].pre = n, a[n].nxt = 1;
while(len)
{
tmp++;
if(len < 2 * k + 1)
{
for(int i = 1 ; i <= n ; i++)
if(!idx[i])
idx[i] = tmp;
len = 0;
}
else
{
while(!b[maxn].vis)
maxn--;
int pos = b[maxn].id, temp, l, r;
b[maxn].vis = false;
idx[pos] = tmp;
temp = pos;
for(int i = 1 ; i <= k ; i++)
{
temp = a[temp].pre;
idx[temp] = tmp;
b[a[temp].data].vis = false;
}
l = a[temp].pre;
temp = pos;
for(int i = 1 ; i <= k ; i++)
{
temp = a[temp].nxt;
idx[temp] = tmp;
b[a[temp].data].vis = false;
}
r = a[temp].nxt;
a[l].nxt = r, a[r].pre = l;
len -= 2 * k + 1;
}
}
for(int i = 1 ; i <= n ; i++)
printf("%d%c", idx[i], " \n"[i == n]);
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1164kb
input:
500 5 393 398 108 117 84 445 14 451 142 53 50 449 491 196 365 488 303 46 429 300 57 348 189 141 293 ...
output:
28 28 28 28 32 32 32 9 9 9 9 9 9 9 9 9 9 9 32 32 32 32 45 29 29 29 29 29 3 3 3 3 3 3 3 3 3 3 3 29 29...
result:
ok single line: '28 28 28 28 32 32 32 9 9 9 9 9...0 32 32 32 28 28 28 28 28 28 28'
Test #2:
score: 10
Accepted
time: 0ms
memory: 1168kb
input:
800 4 732 529 460 536 20 397 470 705 723 571 471 95 578 613 582 522 734 312 751 631 260 510 170 72 4...
output:
50 50 50 50 50 54 54 54 54 54 54 54 54 82 39 39 39 39 39 39 39 39 39 82 82 82 82 86 86 86 25 25 25 2...
result:
ok single line: '50 50 50 50 50 54 54 54 54 54 ...7 48 48 48 48 48 48 50 50 50 50'
Test #3:
score: 10
Accepted
time: 0ms
memory: 1180kb
input:
999 11 425 709 285 798 610 394 18 777 62 828 101 891 726 204 19 609 933 655 812 593 819 668 651 201 ...
output:
35 35 35 35 41 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 41 41 25 25 25 2...
result:
ok single line: '35 35 35 35 41 36 36 36 36 36 ... 3 3 3 3 3 3 3 3 26 26 31 31 35'
Test #4:
score: 10
Accepted
time: 2ms
memory: 1384kb
input:
10000 15 2086 7229 9314 8859 8892 6883 9696 6205 6211 9028 4238 3319 4458 628 6552 9063 6006 6262 52...
output:
98 98 98 98 98 98 98 98 98 98 98 98 291 291 291 291 291 291 31 31 31 31 31 31 31 31 31 31 31 31 31 3...
result:
ok single line: '98 98 98 98 98 98 98 98 98 98 ...8 98 98 98 98 98 98 98 98 98 98'
Test #5:
score: 10
Accepted
time: 8ms
memory: 2320kb
input:
50000 98 7734 8076 7492 15131 23605 19303 36490 48940 27537 48475 38921 45541 43382 17930 48109 2583...
output:
18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 1...
result:
ok single line: '18 18 18 18 18 18 18 18 18 18 ...8 18 18 18 18 18 18 18 18 18 18'
Test #6:
score: 10
Accepted
time: 17ms
memory: 3500kb
input:
100000 76 96269 74627 80621 86094 91844 92348 99721 7372 26125 85969 94067 76051 63209 71619 39296 7...
output:
78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 4...
result:
ok single line: '78 78 78 78 78 78 78 78 78 78 ...8 78 78 78 78 78 78 78 78 78 78'
Test #7:
score: 10
Accepted
time: 85ms
memory: 12876kb
input:
500000 207 371252 499715 480852 496545 461421 476775 450423 491323 479946 497396 497165 485618 47794...
output:
66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 66 6...
result:
ok single line: '66 66 66 66 66 66 66 66 66 66 ...6 66 66 66 66 66 66 66 66 66 66'
Test #8:
score: 10
Accepted
time: 123ms
memory: 19904kb
input:
800000 425 785370 745167 785362 737709 718450 769221 792379 760938 796936 732010 796002 717915 79418...
output:
14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 1...
result:
ok single line: '14 14 14 14 14 14 14 14 14 14 ...4 14 14 14 14 14 14 14 14 14 14'
Test #9:
score: 10
Accepted
time: 164ms
memory: 24584kb
input:
999999 444 954211 992764 974842 986560 968768 992439 995281 999962 970289 975438 982780 985393 99697...
output:
25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 2...
result:
ok single line: '25 25 25 25 25 25 25 25 25 25 ...5 25 25 25 25 25 25 25 25 25 25'
Test #10:
score: 10
Accepted
time: 171ms
memory: 24584kb
input:
1000000 277 956112 974080 948497 979521 952353 962692 955605 995542 989620 978231 998101 985593 9998...
output:
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 5...
result:
ok single line: '55 55 55 55 55 55 55 55 55 55 ...5 55 55 55 55 55 55 55 55 55 55'