C++题目:古董鉴定C++ 代码

题目描述

某地出土了一批古董,每件古董有三个属性,分别是年代,硬度和艺术价值,其中第 𝑖i 件古董的名称为 𝑠𝑖si​,年代为 𝑎𝑖ai​,硬度为 𝑏𝑖bi​,艺术价值为 𝑐𝑖ci​。

对于任意两件古董来说,若某个属性的数值相差大于等于100100,则数值较小的那件古董是不可靠的,应标记为赝品,请将赝品排出后,输出剩余古董名单。

输入格式

第一行:单个正整数 𝑛n。

之后 𝑛n 行每行一个字符串 𝑠𝑖si​与三个正整数 𝑎𝑖,𝑏𝑖,𝑐𝑖ai​,bi​,ci​别表示一件古董的年代,硬度和艺术价值。

输出格式

如果所有古董都被排除了,输出 There is no winner.
否则,第一行输出 Winning list:,然后按输入顺序输出所有保留的古董名称,每个单独一行。

输入样例1:

 
  1. 5
  2. A 1 1 1
  3. B 20 20 20
  4. C 40 40 40
  5. D 80 80 80
  6. E 120 120 120

输出样例1:

 
  1. Winning list:
  2. C
  3. D
  4. E

输入样例2:

 
  1. 3
  2. Ai 1 100 20
  3. Be 101 101 21
  4. Ct 40 80 121

输出样例2:

 
  1. Winning list:
  2. Ct

输入样例3:

 
  1. 2
  2. Old 1 100 121
  3. Egg 101 101 21

输出样例3:

 
  1. There is no winner.
 

数据范围

对于全部的数据 1≤𝑛≤105,1≤∣𝑠𝑖∣≤10,1≤𝑎𝑖,𝑏𝑖,𝑐𝑖≤1091≤n≤105,1≤∣si​∣≤10,1≤ai​,bi​,ci​≤109。

代码:

#include<bits/stdc++.h>
using namespace std;
struct node{
    string name;
    int a,b,c;
};
node gd[100005];
int main()
{
    int n;
    cin>>n;
    int maxa,maxb,maxc;
    for(int i=1;i<=n;i++){
        string xm;cin>>xm;
        int x,y,z;
        cin>>x>>y>>z;
        gd[i]={xm,x,y,z};
        maxa=max(maxa,x);
        maxb=max(maxb,y);
        maxc=max(maxc,z);
    }
    int k=0;
    for(int i=1;i<=n;i++){
        if(maxa-gd[i].a>=100||maxb-gd[i].b>=100||maxc-gd[i].c>=100)continue;
        if(k==0){
            cout<<"Winning list:"<<endl;
            k++;
        }
        cout<<gd[i].name<<endl;
    }
    if(k==0){
        cout<<"There is no winner.";
    }
     return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树敌无数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值