CCF认证201412-3集合竞价

CCF认证201412-3集合竞价题目描述

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	int enable;
	string s;
	double val;
	ll cnt;
	node(int e,string st,double v,ll cn)
	{
		enable=e;
		s=st;
		val=v;
		cnt=cn;
	}
};
vector<node>v;
int main()
{
	string s;
	double money;
	ll sum;
	while(cin>>s)
	{
		if(s=="buy"||s=="sell")
		{
			cin>>money>>sum;
			v.push_back({1,s,money,sum});
		}
		else if(s=="cancel")
		{
			int row;
			cin>>row;
			v.push_back({0,s,0,row});
			v[row-1].enable=0;
		}
		else
		{
			break;
		}
	}
	set<double>price;
	for(int i=0;i<v.size();i++)
	{
		if(v[i].enable==1&&v[i].s=="buy")
		{
			price.insert(v[i].val);
		}	
	}
	ll result=0;
	double p;
	for(set<double>::iterator it=price.begin();it!=price.end();it++)
	{
		//cout<<*it<<" "<<"whf"<<endl;
		ll sumbuy=0,sumsell=0;
		for(int i=0;i<v.size();i++)
		{
			if(v[i].s=="buy"&&v[i].val>=(*it)&&v[i].enable==1)
			{
				sumbuy+=v[i].cnt;
			}
			if(v[i].s=="sell"&&v[i].val<=(*it)&&v[i].enable==1)
			{
				sumsell+=v[i].cnt;
			}
		}
		sumbuy=min(sumbuy,sumsell);
		if(result<=sumbuy)
		{
			result=sumbuy;
			p=*it;
		}
	}
	printf("%.2f %lld",p,result);
	cout<<endl;
}

猜你喜欢

转载自blog.csdn.net/amf12345/article/details/89035731
今日推荐