NWERC2010 NKOJ2178 Stock Prices
来源:互联网 发布:劝人学医天打雷劈知乎 编辑:程序博客网 时间:2024/05/22 09:45
因为题目数据较小,所以可以直接模拟。
每读入一个命令所要进行的操作:
如果是buy,则该种价格的买入数+ni,将该种价格加入到买入价格的集合中。
如果是sell,则该种价格的卖出数+mi,将该种价格加入到卖出价格的集合中。
然后进行销售的操作:
比较最低的卖出价格和最高的买入价格,
如果前者小于等于后者则:
设最低卖出价格的卖出数为a,最高买入价格的买入数为b.
则a=a-min(a,b),b=b-min(a,b)
如果其中卖出数变为0,则在卖出价格集合中删去该种卖出价格。买入数同理。
记录股票价格
------------------------------------------------------------------------------------------------------
直到最低的卖出价格比最高的买入价格要高或者其中一个集合为空时跳出。
将余下来最低的卖出数不为0的卖出价格输出,如果卖出价格集合为空就输出”-”
买入价格同理,最后再输出股票价格
这样就完成了一次命令的操作
注意卖出价格集合为空和买入价格集合为空时的情况
代码如下:
//by NKU lkjslkjdlk#include<cstdio>#include<cstring>#include<set>using namespace std;inline int min(int x,int y){return x<y?x:y;}int cas,or_num,sto_pri,i,bid[1005],ask[1005],trade_num,trade_pri,min_de;char order[100],tmp[10],bs[5],ch;set<int> bids,asks;set<int>::reverse_iterator biter;set<int>::iterator aiter;void print(){if(asks.empty())printf("- ");else printf("%d ",*asks.begin());if(bids.empty())printf("- ");else printf("%d ",*bids.rbegin());if(sto_pri==-1)printf("-\n");else printf("%d\n",sto_pri);}void sell(){while(1){biter=bids.rbegin();aiter=asks.begin();if(*biter>=*aiter){min_de=min(bid[*biter],ask[*aiter]);bid[*biter]-=min_de;ask[*aiter]-=min_de;sto_pri=*aiter;if(bid[*biter]==0)bids.erase(*biter);if(ask[*aiter]==0)asks.erase(*aiter);}if(asks.empty()||bids.empty())break;if(*asks.begin()>*bids.rbegin())break;}}int main(){scanf("%d",&cas);while(cas--){bids.clear();asks.clear();memset(bid,0,sizeof(bid));memset(ask,0,sizeof(ask));scanf("%d%c",&or_num,&ch);for(i=0,sto_pri=-1;i<or_num;i++){gets(order);sscanf(order,"%s %d %s %s %d",bs,&trade_num,tmp,tmp,&trade_pri);if(!strcmp(bs,"buy")){bids.insert(trade_pri);bid[trade_pri]+=trade_num;if(!asks.empty()){sell();print();}else print();}else{asks.insert(trade_pri);ask[trade_pri]+=trade_num;if(!bids.empty()){sell();print();}else print();}}}return 0;}
- NWERC2010 NKOJ2178 Stock Prices
- HDU 4163 Stock Prices
- UVa 12266 Stock Prices (优先队列)
- UVA 12266 Stock prices --优先队列
- stock
- stock
- stock
- stock
- stock
- stock
- stock
- stock
- Lisp for Small Prices
- Predicting Mobile Phone Prices
- 【bzoj4145】[AMPPZ2014]The Prices
- 【AMPPZ2014】【BZOJ4145】The Prices
- [BZOJ4145] [AMPPZ2014]The Prices
- Predicting Boston Housing Prices
- 获取DataTable的多层示例
- 让U盘把内容写入文件,让播放器播放mpg 或avi视频
- libevent(一)
- apk反编译及重新生成
- hive优化总结
- NWERC2010 NKOJ2178 Stock Prices
- 已知rand7(),求rand10()
- iphone数据库的增删改查
- VC中Combo Box控件使用大全
- android中的Intent于Activity的数据传送
- .icns 是什么格式呢?icns是Macintosh图标
- C#多线程和异步操作的异同
- 使用expect自动登录
- /etc/sysconfig/selinux 配置文件————相关介绍