PAT:1015. 德才论 (25) AC

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Student
{
  char mID[10];
  int de,cai,sum;
  int tag;        //标明是第几类:1德才都们组,2德胜才,3
}STU[100010];

bool cmp(Student a,Student b)    //【warning】不能写STU
{
  if(a.tag!=b.tag)
    return a.tag<b.tag;
  else if(a.sum!=b.sum)
    return a.sum>b.sum;
  else if(a.de!=b.de)
    return a.de>b.de;
  else
    return strcmp(a.mID,b.mID)<0;  //【caution】小于号勿忘!!
}

int main()
{
  int n,L,H;
  scanf("%d%d%d",&n,&L,&H);
  int m=n;              //m记录有效人数
  for(int i=0 ; i<n ; ++i)
  {
    scanf("%s %d %d",&STU[i].mID,&STU[i].de,&STU[i].cai);
    STU[i].sum=STU[i].cai+STU[i].de;
    if(STU[i].de < L || STU[i].cai < L)        //淘汰的人
    {
      STU[i].tag=5;
      --m;
    }
    else if(STU[i].de >=H && STU[i].cai >=H )
      STU[i].tag=1;
    else if(STU[i].de >=H && STU[i].cai < H )
      STU[i].tag=2;
    else if(STU[i].de < H && STU[i].cai < H && STU[i].de >= STU[i].cai)
      STU[i].tag=3;
    else
      STU[i].tag=4;
  }
  sort(STU,STU+n,cmp);
  printf("%d\n",m);
  for(int i=0 ; i<m ; ++i)
    printf("%s %d %d\n",STU[i].mID,STU[i].de,STU[i].cai);
  return 0;
}
时间: 2024-12-17 22:27:06

PAT:1015. 德才论 (25) AC的相关文章

【PAT】1015 德才论 (25)(25 分)

1015 德才论 (25)(25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人." 现给出一批考生的德才分数,请根据司马光的理论给出录取排名. 输入格式: 输入第1行给出3个正整数,分别为:N(<=10^5^),即考生总数:L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被

PAT-乙级-1015. 德才论 (25)

1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Li 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人.” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名. 输入格式: 输入第1行给出3个正整数,分别为:N(<=105),即考生总数:

[PAT Basic] 1015 德才论 (25 分)

思路 根据题意,首先创建对应结构体,分别定义四个vector,根据提交逐个push, 重点是sort比较函数的逻辑,然后对每个vector排序输出 cpp #include <iostream> #include <string> #include <algorithm> #include <vector> using namespace std; int n, l, h, suc = 0; typedef struct stu { int id; int

PAT——1015. 德才论

宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人." 现给出一批考生的德才分数,请根据司马光的理论给出录取排名. 输入格式: 输入第1行给出3个正整数,分别为:N(<=105),即考生总数:L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取:H(<100),为优先录取线

1015. 德才论 (25)

宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人.” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名. 输入格式: 输入第1行给出3个正整数,分别为:N(<=105),即考生总数:L(>=60),为录取最低分数线,即德分 和才分均不低于L的考生才有资格被考虑录取:H(<100),为优先录取线——德分和才分均不低于此线的被定义为“

1015 德才论 (25分)

宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人.” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名. 输入格式: 输入第一行给出 3 个正整数,分别为:N(≤),即考生总数:L(≥),为录取最低分数线,即德分和才分均不低于 L 的考生才有资格被考虑录取:H(<),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才

PAT:1003. Emergency (25) AC

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int MAXV=510; const int INF=0x3fffffff; int n,m,c1,c2; bool vis[MAXV]; int G[MAXV][MAXV]; //城市间距离 int weight[MAXV]; //每个城市的救援人数 int d[MAXV]; //最短距离 int w

PAT:1029. Median (25) AC

#include<stdio.h> #include<algorithm> using namespace std; int arr1[1000066]; int arr2[1000066]; int main() { int n1,n2; scanf("%d",&n1); for(int i=0 ; i<n1 ; ++i) { scanf("%d",&arr1[i]); } scanf("%d",&

PAT:1020. 月饼 (25) AC

#include<stdio.h> #include<algorithm> using namespace std; struct cake { double amount; double sum_price,price; }M[1010]; bool cmp(cake a,cake b) { return a.price>b.price; } int main() { double need=0; int kinds=0; scanf("%d%lf",&