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分
#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;
}

