CCF 201412-3 集合竞价

来源:互联网 发布:jquery处理json数据 编辑:程序博客网 时间:2024/05/03 07:01
/* 测试数据buy 9.25 100buy 8.88 175sell 9.00 1000buy 9.00 400sell 8.92 400cancel 1buy 100.00 50*///总结: i和j不要混用,尤其是写复杂的循环,要把i和j分开//新建变量时,要赋初值 #include<iostream>#include<cstring>#include<vector>#include<cmath>#include<algorithm>#include<iomanip>using namespace std;class piece{public:string order;double price;long long num;int line;};vector<piece> budget;bool cmp(piece a,piece b){if (a.price<b.price) return true;return false;}int main(){char str[10];int numofline=0;//cin>>str;//while(!cin.eof()){////cin>>str;//}while(scanf("%s",str)!=EOF){numofline++;double p;long long n;int tocancel;piece a;if(str[0]=='b'){a.order="buy";cin>>p>>n;a.price=p;a.num=n;a.line=numofline;budget.push_back(a);}if(str[0]=='s'){a.order="sell";cin>>p>>n;a.price=p;a.num=n;a.line=numofline;budget.push_back(a);}if(str[0]=='c'){cin>>tocancel;for(int i=0;i<budget.size();i++){if(budget[i].line==tocancel)budget[i].order="canceled";}}}vector<piece> budget1;vector<piece> budget2;for(int i=0;i<budget.size();i++){if(budget[i].order=="buy") budget1.push_back(budget[i]);if(budget[i].order=="sell") budget2.push_back(budget[i]);}sort(budget1.begin(),budget1.end(),cmp);sort(budget2.begin(),budget2.end(),cmp);cout<<"budget1!!!"<<endl;for(int i=0;i<budget1.size();i++)cout<<budget1[i].order<<" "<<budget1[i].price<<" "<<budget1[i].num<<endl;cout<<"budget2!!!"<<endl;for(int i=0;i<budget2.size();i++)cout<<budget2[i].order<<" "<<budget2[i].price<<" "<<budget2[i].num<<endl;long long  max;double p0;for(int i=0;i<budget1.size();i++){double p=budget1[i].price;long long calculate=0,numofbuy=0,numofsell=0;for(int j=0;j<budget1.size();j++){if (budget1[j].price>=p)numofbuy+=budget1[j].num;}for(int j=0;j<budget2.size();j++){if (budget2[j].price<=p)numofsell+=budget2[j].num;}calculate=numofbuy;if(numofbuy>numofsell) calculate=numofsell;if (calculate>=max) {max=calculate;p0=p;}}cout<<fixed<<setprecision(2)<<p0<<" "<<max;return 0;}

0 0
原创粉丝点击