• pat 1062. Talent and Virtue (25)


    难得的一次ac

    题目意思直接,方法就是对virtue talent得分进行判断其归属类型,用0 1 2 3 4 表示 不合格 sage noblemen foolmen foolmen

    再对序列进行排序 优先级  类型>total grade>virtue>id

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define N 100005
    struct node
    {
    	char id[10];
    	int v,t,c;
    }s[N];
    int cmp(const void *a,const void *b)
    {
    	struct node *x=(struct node *)a;
    	struct node *y=(struct node *)b;
    	if(x->c!=y->c)return x->c-y->c;
    	if(y->v+y->t!=(x->v+x->t))return y->v+y->t-(x->v+x->t);
    	if(y->v!=x->v)return y->v-x->v;
    	return strcmp(x->id,y->id);
    }
    int main()
    {
    	int n,i,l,h;
    	while(scanf("%d%d%d",&n,&l,&h)!=EOF)
    	{
    		for(i=0;i<n;i++)
    		{
    			scanf("%s%d%d",s[i].id,&s[i].v,&s[i].t);
    			if(s[i].v>=h&&s[i].t>=h)s[i].c=1;
    			else
    				if(s[i].v>=h&&s[i].t>=l&&s[i].t<h)s[i].c=2;
    				else
    					if(s[i].v>=l&&s[i].v<h&&s[i].t>=l&&s[i].t<h&&s[i].v>=s[i].t)s[i].c=3;
    					else
    						if(s[i].v>=l&&s[i].t>=l)s[i].c=4;
    						else
    							s[i].c=0;
    		}
    		qsort(s,n,sizeof(struct node),cmp);
    		for(i=0;i<n;i++)
    			if(s[i].c!=0)break;
    			printf("%d
    ",n-i);
    		for(;i<n;i++)
    			printf("%s %d %d
    ",s[i].id,s[i].v,s[i].t);
    
    	}
    }


     

  • 相关阅读:
    7. Spring验证、数据绑定和类型转换
    J2EE应用与移动互联网-写在前头
    IT基础设施资源的实践----写在前头
    JavaScript随笔记(一)基础概念以及变量类型
    js函数表达式
    js面形对象(2)
    js面向对象
    viPlugin安装破解
    Ubuntu12.04 使用中遇到的问题
    关于sizeof
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3297199.html
Copyright © 2020-2023  润新知