《C++懒羊羊吃草问题》由会员分享,可在线阅读,更多相关《C++懒羊羊吃草问题(3页珍藏版)》请在金锄头文库上搜索。
1、C+ 懒羊羊吃草问题题目:众所周知,懒羊羊是所有小羊里最贪吃的一只。然而,鲜为人知的是,懒羊羊也有存储粮食的习惯。而更让大家吃惊的事实是,我们的懒羊羊做事很有条理, 每当他存储一份粮食时,他会专门拿出一个筐来存放。因此,他的仓库里有很多很多筐的青草。而我们的懒羊羊又是个经常馋嘴的小羊,每 当他想吃草时,就会从仓库里找出数量最少的一筐草,把它吃掉。可是懒羊羊因为草吃得太多了导致大脑运转缓慢,所以他不得不向你请求支援,帮他找出他应该吃数量为多少的青草。输入:第一行为一个正整数n,表示懒羊羊一共进行了n次操 作(2=n=10000)。 第二行至第 n+1行每行表示一个懒羊羊的操作,当这行形式为单独一
2、个字符 q 时,表示懒羊羊肚子饿了,要吃掉仓库里当前数量最少的那份青草;当这行形式为一个字符 i和一个整数k时,表示懒羊羊将一份数量为k(1=k=maxlongint)的青草存入了仓库,i和k之间用空格隔开。输入数据保证每次询问时仓库里都有草可吃且所有操作中懒羊羊至少会吃一次草。输出:每当输入为 q 时,输出懒羊羊当前吃掉的那份青草的数量是多少。样例输入 5i 5i 2qi 9q样例输出25代码:#includeusing namespace std;priority_queue int , vector , greater q; int ans,a1000005,n,x,i,j,k;int main() char ch; cinn; for(int i=0;ich; if(ch=i) cinx; /如果是i,就放到队列中 q.push(x); if(ch=q) aj+=q.top(); /如果是q,就将队头的值赋给a数组,并加队头移出队列 q.pop(); for(int i=0;ij;i+) coutaiendl; /依次输出a数组即可 return 0;3