问题标题: 酷町堂:2705

0
0
已解决
胡钰妍
胡钰妍
资深光能
资深光能

2705   选择供应商

题目描述 Description

某学校要进行重新装潢,一共需要三种不同的材料,现在有多个供应商可以提供所有装潢需要的材料,供应商提供三种材料的价格,价格为0表示该种供应商没有那一种材料,学校想处理的越简单越好,所以打算选择一个可以提供三种材料的某一家供应商来买,且三种材料的平均价格越低越好。

输入描述 Input Description

第一行:n,表示有n个供应商,n<=60
接下来n行:每行先有一个字符串表示供应商的名字,然后有三个数字分别表示三种不同材料的价格,价格为0表示此家供应商没有那一种材料

输出描述 Output Description

输出一行,为选中的供应商的信息,包括供应商的名字和此家三种材料的价格

样例输入 Sample Input

 

10
IuUjgKA 9 0 10
v 6 0 2
JBhLeCdA 8 9 1
ZPymTsna 7 8 1
DaCpcjBR 8 1 0
K 6 6 1
lh 8 3 4
YNgoOdBU 8 10 4
Lh 10 5 7
WbKuli 3 6 1

样例输出 Sample Output

 

WbKuli 3 6 1

 

 

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
struct gys
{
    string mz;
    int a,b,c;
}a[1001];
bool cmp (gys s1,gys s2)
{
    if (s1.a!=s2.a)
        return s1.a<s2.a;
    else if (s1.b!=s2.b)
        return s1.b<s2.b;
    else if (s1.c<s2.c)
        return s1.c<s2.c;
}
int main ()
{
    int n;
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i].mz>>a[i].a>>a[i].b>>a[i].c;
        if (!(a[i].a||a[i].b||a[i].c))
        {
            a[i].a=0;
            a[i].b=0;
            a[i].c=0;
        }
    }
    sort(a,a+n,cmp);
    cout<<a[n].mz<<" "<<a[n].a<<" "<<a[n].b<<" "<<a[n].c;
    return 0;
}

10分


0
已采纳
车轩立
车轩立
资深守护
资深守护

#include<iostream>
using namespace std;
struct SHOP{
    string name;
    int a,b,c;
    int sum(){
        return a+b+c;
    }
}g[66];
int main(){
    int n,i,s=66666,t;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>g[i].name>>g[i].a>>g[i].b>>g[i].c;
        if(s>g[i].sum()&&(g[i].a&&g[i].b&&g[i].c)){
            s=g[i].sum();
            t=i;
        }
    }
    cout<<g[t].name<<" "<<g[t].a<<" "<<g[t].b<<" "<<g[t].c;
    return 0;
}
   

0
0
0
车轩立
车轩立
资深守护
资深守护

你想麻烦了,不用这样

结构体排序+判断

0
我要回答