ds 4.3 不知道取什么好

    xiaoxiao2021-12-14  41

    /*************** 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

    最新回复(0)