1062. Talent and Virtue

本文展示了一个使用C++进行编程竞赛的例子,通过定义结构体并实现比较函数来进行数据分类和排序。具体包括如何读取输入数据、定义结构体、实现自定义排序逻辑以及输出结果。

这一题 唯一的粗心是还没看完题目就开始写了

总的来说 用一个vector数组来存储分类  然后排序 只要思路清晰又不粗心 就可以对

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stack>
#include<iterator>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
using namespace std;
typedef struct node{
int  ID;
int t;
int v;
int total;
}node;
bool cmp(node A,node B)
{
    if(A.total<B.total)
        return false;
    else if(A.total==B.total)
    {
        if(A.v<B.v)
            return false;
        else if(A.v==B.v&&A.ID>B.ID)
            return false;
    }
    return true;

}
int main()
{
    int n,l,h,j;
    node p[100000];
    scanf("%d%d%d",&n,&l,&h);
    j=0;
    vector<node> s[4];
    for(int i=0;i<n;i++)
    {
    scanf("%d%d%d",&p[j].ID,&p[j].v,&p[j].t);
    p[j].total=p[j].v+p[j].t;
        if(p[j].t>=l&&p[j].v>=l)
         {

           if(p[j].t>=h&&p[j].v>=h)
           s[0].push_back(p[j]);
            else if(p[j].t<h&&p[j].v>=h)
            s[1].push_back(p[j]);
            else if(p[j].v>=p[j].t&&p[j].v<h&&p[j].t<h)
            s[2].push_back(p[j]);
           else
            s[3].push_back(p[j]);
                j++;
         }
    }
    printf("%d\n",j);
    for(int i=0;i<4;i++)
        sort(s[i].begin(),s[i].end(),cmp);
    for(int i=0;i<4;i++)
    {
        int ssize=s[i].size();
        for(j=0;j<ssize;j++)
            printf("%d %d %d\n",s[i][j].ID,s[i][j].v,s[i][j].t);
    }

        return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值