题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=754
代码如下;
#include<stdio.h>
02.
#include<queue>
03.
using namespace std;
04.
int main()
05.
{
06.
int m,n;
07.
queue<int>q;
08.
priority_queue<int>Q;
09.
while(scanf("%d%d",&m,&n)!=EOF)
10.
{
11.
while(!q.empty())
12.
q.pop();
13.
while(!Q.empty())
14.
Q.pop();
15.
int num;
16.
for(int i=1;i<=m;i++)
17.
{
18.
scanf("%d",&num);
19.
q.push(num);
20.
Q.push(num);
21.
} //数据输进去之后,系统进行从大到小的排序
22.
while(1)
23.
{
24.
int t=q.front();
25.
q.pop();
26.
if(n==0)
27.
{
28.
if(t==Q.top())
29.
{
30.
printf("%d\n",m-q.size());
31.
break;
32.
}
33.
else
34.
{
35.
q.push(t);
36.
n=q.size()-1;
37.
}
38.
39.
}
40.
else
41.
{
42.
n--;
43.
if(t==Q.top())
44.
{
45.
Q.pop();
46.
}
47.
else
48.
{
49.
q.push(t);
50.
}
51.
}
52.
53.
}
54.
}
55.
return 0;
56.
}
本文提供了一个ACM竞赛题目的代码实现,通过使用队列和优先队列来解决特定问题,实现了数据输入后的从大到小排序,并给出了详细的逻辑流程。
1034

被折叠的 条评论
为什么被折叠?



