405J1R训练(T636406 同学会)

· · 个人记录

正确代码

先来一个struct City{int num;int dis;string name;int money}a[155];再来一个cmp,然后定一个len=1;再来一个while(cin):

while(cin>>a[len].num>>a[len].dis>>a[len].name){
    len++;
} 

然后在外面len--;再来一个嵌套循环:

for(int i=1;i<=len;i++){
    for(int j=1;j<=len;j++){
        if(a[i].name!=a[j].name){
            a[i].money+=abs(a[i].dis-a[j].dis)*a[j].num;
        }
    }
}

然后来个sort排序,最后来个输出。

正确代码

#include<bits/stdc++.h>
using namespace std;
struct City{
    int num;
    int dis;
    string name;
    int money;
}a[155];
int cmp(City c1,City c2){
    if(c1.money==c2.money){
        return c1.dis<c2.dis;
    }
    return c1.money<c2.money;
}
int main(){
    int len=1;
    while(cin>>a[len].num>>a[len].dis>>a[len].name){
        len++;
    } 
    len--;
    for(int i=1;i<=len;i++){
        for(int j=1;j<=len;j++){
            if(a[i].name!=a[j].name){
                a[i].money+=abs(a[i].dis-a[j].dis)*a[j].num;
            }
        }
    }
    sort(a+1,a+1+len,cmp);
    cout<<a[1].name<<" "<<a[1].money;
    return 0;
}