/***************
Problem from :
Problem describe :
直接用两个队列存储即可
一个是优先队列 从大到小
一个是正常的队列 保存输入的数
data:
****************/
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<stack>
#include<queue>
#include<ctime>
#include<cstring>
#include<vector>
#include<string>
#define ll __int64
#define inf 0x3f3f3f3f3f
using namespace std;
struct node{
int id;
int val;
};
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
priority_queue<int>Max_v;
queue<node>q;
int i, n, m, ans=0;
node x;
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++)
{
scanf("%d", &x.val);
x.id=i;//注意要记录最开始的位置
q.push(x);
Max_v.push(x.val);
}
while(!q.empty())
{
node p = q.front();
q.pop();
if(p.val==Max_v.top())//只有当前点为最大值才能输出
{
ans++;
if(p.id==m) break;//当前点即为所求点就结束循环
Max_v.pop();//当前点被OUT了 所以优先队列也应该OUT当前最大值
}
else
{
q.push(p);//插入到队尾
}
}
printf("%d\n", ans);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-969585.html