UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#210257#3776. 可爱小树yhmm100133ms4224kbC++11987b2024-08-06 09:56:232024-08-06 12:19:53

answer

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int n,fa[200001],pos,k=0;
struct node
{
	int h,idx;
}tree[200001];
bool cmp(node a,node b)
{
	return a.h>b.h;
}
int FastReadInt()
{
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-')
		{
			f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=(x<<1)+(x<<3)+(c^48),c=getchar();
	}
	return x*f;
}
int main(){
	n=FastReadInt();
	for(int i=1;i<=n;i++)
	{
		tree[i].h=FastReadInt();
		tree[i].idx=i;
	}
	sort(tree+1,tree+n+1,cmp);
	queue<int>q;
	for(int i=1;i<=n;i++)
	{
		pos=i;
		while(pos<n&&tree[pos+1].h==tree[pos].h)
		{
			pos++;
		}
		for(int j=i;j<=pos;j++)
		{
			if(q.size())
			{
				k=q.front();
				fa[tree[j].idx]=k;
				q.pop();
			}
			else
			{
				fa[tree[j].idx]=k;
			}
		}
		for(int j=i;j<=pos;j++)
		{
			q.push(tree[j].idx);
		}
		i=pos;
	}
	for(int i=1;i<=n;i++)
	{
		printf("%d ",fa[i]);
	}
	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1208kb

input:

11
0 1 2 3 4 5 6 7 8 9 10

output:

2 3 4 5 6 7 8 9 10 11 0 

result:

ok Congrats, all the answers are valid.

Test #2:

score: 10
Accepted
time: 0ms
memory: 1208kb

input:

49
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 30 31 32 33 34 35...

output:

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 ...

result:

ok Congrats, all the answers are valid.

Test #3:

score: 10
Accepted
time: 0ms
memory: 1228kb

input:

999
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 30 31 32 33 34 3...

output:

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 ...

result:

ok Congrats, all the answers are valid.

Test #4:

score: 10
Accepted
time: 0ms
memory: 1208kb

input:

94
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0...

output:

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 4...

result:

ok Congrats, all the answers are valid.

Test #5:

score: 10
Accepted
time: 27ms
memory: 4224kb

input:

199992
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...

output:

126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 ...

result:

ok Congrats, all the answers are valid.

Test #6:

score: 10
Accepted
time: 0ms
memory: 1268kb

input:

4995
3598 702 2058 315 810 3553 2897 812 3108 395 847 1936 1347 3112 431 3546 1213 542 1674 253 1115...

output:

2636 2979 802 3417 4644 2412 919 963 3271 2780 3783 1193 1481 4128 1613 2471 3761 2751 3933 535 3842...

result:

ok Congrats, all the answers are valid.

Test #7:

score: 10
Accepted
time: 48ms
memory: 3548kb

input:

199995
73857 87223 9127 55593 79096 29256 65222 68517 94617 24795 59461 64589 29004 18418 90863 2720...

output:

192292 13049 88363 9987 114466 5342 87219 130949 94970 120845 47849 118090 60208 183349 80490 156518...

result:

ok Congrats, all the answers are valid.

Test #8:

score: 10
Accepted
time: 24ms
memory: 2388kb

input:

99993
53106 38032 8196 3041 65305 15449 52233 7617 6543 21376 61968 23032 33290 58751 14610 5174 727...

output:

76798 83725 23970 88585 32587 82824 50181 16983 96022 42034 2598 73161 65147 31146 98480 11045 96825...

result:

ok Congrats, all the answers are valid.

Test #9:

score: 10
Accepted
time: 23ms
memory: 2384kb

input:

99998
37562 29469 5433 30712 31359 56582 18039 29636 52142 9885 6407 11263 47450 45300 34612 31399 1...

output:

15103 98273 63343 58792 30297 87736 65607 94123 12900 56078 33568 14718 66778 50524 97104 17330 2956...

result:

ok Congrats, all the answers are valid.

Test #10:

score: 10
Accepted
time: 11ms
memory: 1796kb

input:

49994
43071 40142 37165 42661 2289 25114 35938 2629 12203 3996 18305 7586 22898 12631 36647 17835 39...

output:

4679 37096 20436 16172 502 34949 22293 22585 2704 2755 45020 28352 46357 23659 43770 49003 13544 385...

result:

ok Congrats, all the answers are valid.

Extra Test:

score: 0
Extra Test Passed