GDOI zouji
  • 板块学术版
  • 楼主6LZT
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/4/16 15:31
  • 上次更新2023/10/28 03:36:12
查看原帖
GDOI zouji
643691
6LZT楼主2022/4/16 15:31

这道题暴力吧(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;
}

不喜勿喷

2022/4/16 15:31
加载中...