UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#200946#3478. selectpipibob100570ms24584kbC++1.7kb2024-01-14 11:41:592024-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'