为什么这题加上freopen就错了
#include<bits/stdc++.h>
using namespace std;
int n,A,B,C,ssum,maxs=-1,maxt;
string ansna;
struct nd{
string name;
int num,time;
}a[20000];
bool cmp(nd x,nd y){
if(x.name==y.name){
return x.time<y.time;
}
return x.name<y.name;
}
int main(){
//freopen("zuoji.in","r",stdin);
//freopen("zuoji.out","w",stdout);
cin>>n>>A>>B>>C;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].num;
a[i].time=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(a[i].name==a[i+1].name){
if(a[i].num==1) ssum+=A;
if(a[i].num==2) ssum+=B;
if(a[i].num==3) ssum+=C;
}
else{
if(a[i].num==1) ssum+=A;
if(a[i].num==2) ssum+=B;
if(a[i].num==3) ssum+=C;
if(ssum>maxs) maxs=ssum,maxt=a[i].time,ansna=a[i].name;
if(ssum==maxs&&a[i].time<maxt) maxs=ssum,maxt=a[i].time,ansna=a[i].name;
ssum=0;
}
}
cout<<ansna<<" "<<maxs;
return 0;
}