思路:照着模拟就行
坑点:一个订单可能会被删除多次,还有一个点。。。优先队列的top函数,返回的是一个copy。。。
代码如下:
/*
*/
#define LOCAL
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#include<cmath>
#include<vector>
#include<set>
#include<map>
using namespace std;
#define maxn 10010
#define inf 40000000
#define LL long long
struct BUY
{
int size,price;//买量,买价
int id;//进入的编号
bool operator <(const BUY &rhs) const
{
if(price==rhs.price) return id>rhs.id;
return price<rhs.price;//买价要最高
}
};
struct SELL
{
int size,price;//卖量,卖价
int id;//进入的编号
bool operator <(const SELL &rhs) const
{
if(price==rhs.price) return id>rhs.id;
return price>rhs.price;//卖价要最低
}
};
struct node
{
int cancel;//是否被删除
int size;//数量
int price;//价值
char op;
};
int main()
{
#ifdef LOCAL
//freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
#endif
int Case=0,q;