ccf集合竞价

时间:2022-04-21 04:47:26

我不懂为什么是错误。然后零分。贴出测试。

ccf集合竞价

然后即使注释掉while循环中的break部分,也是如此。

 #include<iostream>
#include<iomanip>
using namespace std;
typedef struct p
{
string str;
float price;
long long num;
};
typedef struct ans
{
float p;
long long num;
};
p x[],x1[],x2[];
ans an[];
int main()
{
int i=,j=,k=,l=;
while(cin>>x[i].str)//读入数据
{
if(x[i].str=="cancel")
{
int no;
cin>>no;
no--;
x[no].str="cancel";
x[no].price=;
x[no].num=;
}
else if(x[i].str=="buy"||x[i].str=="sell")
{
float p;
long long n;
cin>>p;
cin>>n;
x[i].price=p;
x[i].num=n;
i++;
}
else
break;
}
for(j=;j<i;j++)//数据分类
{
if(x[j].str=="buy")
{
x1[k].str=x[j].str;
x1[k].price=x[j].price;
x1[k].num=x[j].num;
k++;
}
if(x[j].str=="sell")
{
x2[l].str=x[j].str;
x2[l].price=x[j].price;
x2[l].num=x[j].num;
l++;
}
} int s=,t=;
for(s=;s<k;s++)//数据排序
{
for(t=s;t<k;t++)
{
if(x1[t].price>x1[s].price)
{
swap(x1[t],x1[s]);
}
}
} for(s=;s<l;s++)
{
for(t=s;t<l;t++)
{
if(x2[t].price<x2[s].price)
{
swap(x2[t],x2[s]);
}
}
} int r0=,r1=,r2=; for(s=;s<l;s++)
{
r0=x2[s].price;
an[s].p=x2[s].price;
r1=;
r2=;
for(t=;t<k;t++)
{
if(x1[t].price>=x2[s].price)//买得起
{
r1=r1+x1[t].num;
r2=r2+x2[s].num;
}
}
if(r1>r2)
{
an[s].num=r2;
}
else
{
an[s].num=r1;
} }
for(s=;s<l;s++)//找到最大的价格
{
for(t=s;t<l;t++)
{
if(an[t].p>an[s].p)
{
swap(an[t],an[s]);
}
}
}
cout<<setiosflags(ios::fixed)<<setprecision()<<an[].p;
cout<<" "<<an[].num<<endl;
return ;
}