1062. Talent and Virtue

来源:互联网 发布:淘宝网店可以改名吗 编辑:程序博客网 时间:2024/06/06 09:11

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

总的来说 用一个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:busing 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;}


0 0