郁闷,老师给的PDF上是在STL的,但是用了multimap后就超时...重新写个能过的...不过也算是学习了点STL还有就是原来用STL里面的东西有些效率还是不是很高的(对于机器来说= =).
以下是非STL的代码:
#include<iostream>
#include<string>
using namespace std;
struct node
{
int val;
int num;
string name;//第一个投这个的人
};
int main()
{
int icase,z=1;
bool fl=false;
cin>>icase;
while(icase--)
{
if(fl)
cout<<endl;
fl=true;
node no[10001];
int val,peo,k=0;
cin>>val>>peo;
while(peo--)
{
string name;
bool flag=true;
int va;
cin>>name>>va;
for(int i=0;i<k;i++)
{
if(no[i].val==va)
{
no[i].num++;
flag=false;
break;
}
}
if(flag)
{
no[k].name=name;
no[k].num=1;
no[k].val=va;
k++;
}
}
int min=9999;
for(int i=0;i<k;i++)//找num最小
{
if(no[i].num<min)
{
min=no[i].num;
}
}
int vamin=9999;
int aim;
for(int i=0;i<k;i++)
{
if(no[i].num==min)
if(no[i].val<vamin)
{
aim=i;
vamin=no[i].val;
}
}
cout<<"Case "<<z++<<':'<<endl
<<"The winner is "<<no[aim].name<<'.'<<endl
<<"The price is "<<no[aim].val<<'.'<<endl;
}
return 0;
}