关于GDOI Day1 T1
  • 板块灌水区
  • 楼主SHENTONG_ZY
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/4/19 12:43
  • 上次更新2023/10/28 03:20:18
查看原帖
关于GDOI Day1 T1
427590
SHENTONG_ZY楼主2022/4/19 12:43

为什么这题加上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;
}
2022/4/19 12:43
加载中...