这道题暴力吧(doge)
虽然感觉简单,还是打了50多行
总的来说就是先合并再排序
代码:(这里我把freopen去掉了)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int n, a, b, c;
string name[1005];
int money[1005], vis[1005], num[1005];
int w_m(int x){
if (x == 1) return a;
if (x == 2) return b;
if (x == 3) return c;
}
bool cmp(int x, int y){
if (money[x] > money[y]) return true;
if (money[x] < money[y]) return false;
else{
return vis[x] < vis[y];
}
}
int main(){
cin >> n >> a >> b >> c;
string x;
int y, count=0;
for (int i = 1; i <= n; i++){
num[i] = i;
cin >> x >> y;
int flag = 0;
for (int j = 1; j <= count; j++){
if (x == name[j]){
money[j] += w_m(y);
vis[j] = i;
flag = 1;
}
}
if (flag == 0){
count++;
name[count] = x;
money[count] += w_m(y);
vis[count] = i;
}
}
sort(num+1, num +1+count, cmp);
cout << name[num[1]] << " " << money[num[1]];
return 0;
}
不喜勿喷