• 排序,结构体排序,大小排序


    Problem  F

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 3   Accepted Submission(s) : 2

    Font: Times New Roman | Verdana | Georgia

    Font Size:

    Problem Description

    “Point, point, life of student!” This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course. There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50. Note, only 1 student will get the score 95 when 3 students have solved 4 problems. I wish you all can pass the exam! Come on!

    Input

    Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed time). You can assume that all data are different when 0<p. A test case starting with a negative integer terminates the input and this test case should not to be processed.

    Output

    Output the scores of N students in N lines for each case, and there is a blank line after each case.

    Sample Input

    4
    5 06:30:17
    4 07:31:27
    4 08:12:12
    4 05:23:13
    1
    5 06:30:17
    -1
    

    Sample Output

    100
    90
    90
    95
    
    100
    
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int main()
    {
        char a[100][9];
        int b[100],c[100],d[6],N,i,j,f;
        while(cin>>N)
        if(N>-1)
        {
            memset(d,0,sizeof(d));
            for(i=0;i<N;i++)
            {cin>>b[i]>>a[i];
            switch(b[i])
            {
            case 5:d[5]++;break;
            case 4:d[4]++;break;
            case 3:d[3]++;break;
            case 2:d[2]++;break;
            case 1:d[1]++;break;
            }
            memset(c,0,sizeof(c));
            }
            for(i=0;i<N;i++)
                for(int j=0;j<N;j++)
                    if(strcmp(a[i],a[j])>0&&b[i]==b[j])c[i]++;
            for(i=0;i<N;i++)
            {
            switch(b[i])
            {
                case 5:cout<<100<<endl;break;
                case 4:if(c[i]<d[4]/2)cout<<95<<endl;
                    else cout<<90<<endl;break;
                case 3:if(c[i]<d[3]/2)cout<<85<<endl;
                    else cout<<80<<endl;break;
                case 2:if(c[i]<d[2]/2)cout<<75<<endl;
                    else cout<<70<<endl;break;
                case 1:if(c[i]<d[1]/2)cout<<65<<endl;
                    else cout<<60<<endl;break;
                default:cout<<50<<endl;break;
            }
      }
            cout<<endl;
        }
        return 0;
    }
    我写的

    #include <iostream>

    #include <stdio.h>

    #include <string.h>

    #include <algorithm>

    using namespace std

    ; int main()

    {    

    int t,save[6][2]={50,50,60,65,70,75,80,85,90,95,100,100},j,i,h,g,temp[100],a1[100],a[100],ans[1000],k;  

       char c[100][1000];    

    while(scanf("%d",&t))  

       {        

    if(t<=0)    

         break;     

        memset(a1,0,sizeof(a1));     

        memset(temp,0,sizeof(temp));

            for(h=0;h<t;h++)     

        {         

        scanf("%d",&a[h]);

                j=a[h];         

        a1[j]++;        

             cin>>c[h];     

        }          

       for(i=0;i<t;i++)      

              for(g=0;g<t;g++)    

                  if(strcmp(c[i],c[g])>0&&a[i]==a[g])temp[i]++;  

                      for(i=0;i<t;i++)    

                 {             

            k=a[i];            

               if(temp[i]<a1[k]/2)            

                      ans[i]=save[k][1];        

                     else                    

             ans[i]=save[k][0];      

               }              

       for(i=0;i<t;i++)               

          cout<<ans[i]<<endl;        

             cout<<endl;     

        }

        return 0;

    }

       

    #include <iostream>

    #include <stdio.h>

    #include<string.h>

    #include <algorithm>

    using namespace std;

    struct node {   

      int index;     int score;     int p,t;   

      bool  operator<(const node&a)const;

    };node a[103];

    bool node:: operator<(const node&b)const

    {     if(b.p==p)      return t<b.t;     return p>b.p; }

    bool cmp1(const node&a,const node&b)

    {     return a.index<b.index;

    } int hash[6];

    int main() {    

    int i,j,n;    

    int h,m,s;    

    while(scanf("%d",&n),n!=-1)   

      {      

       memset(hash,0,sizeof(hash));    

         for(i=0;i<n;i++)      

       {            

    scanf("%d %d:%d:%d",&a[i].p,&h,&m,&s);    

             hash[a[i].p]++;     

            a[i].t=h*3600+m*60+s;       

          a[i].index=i;     

        }     

    sort(a,a+n);   

       i=0;   

       while(a[i].p==5)     

       a[i++].score=100;  

        for(j=0;j<hash[4]/2;j++)  

           a[i++].score=95;   

       for(;j<hash[4];j++)      

       a[i++].score=90;

          for(j=0;j<hash[3]/2;j++)    

         a[i++].score=85;      

    for(;j<hash[3];j++)      

      a[i++].score=80;   

       for(j=0;j<hash[2]/2;j++)      

      a[i++].score=75;  

        for(;j<hash[2];j++)    

       a[i++].score=70;   

      for(j=0;j<hash[1]/2;j++)   

         a[i++].score=65;  

        for(;j<hash[1];j++)    

       a[i++].score=60;   

       for(;i<n;i++)     

       a[i].score=50;  

        sort(a,a+n,cmp1);   

       for(i=0;i<n;i++)    

       printf("%d\n",a[i].score);  

        printf("\n");   

      }    

    return 0;

    }

  • 相关阅读:
    gulp教程、gulp-less安装
    vue学习总结
    javascript数组去重
    【操作系统】操作系统高频面试考点总结
    【面经系列】一线互联网大厂前端面试技巧深入浅出总结
    【编程题与分析题】Javascript 之继承的多种实现方式和优缺点总结
    【计算机网络】TCP基础知识详解
    【操作系统】操作系统面试基础知识点总结
    【数据结构与算法】数据结构基础知识总结(面试考点)
    【前端知识体系-JS相关】JS-Web-API总结
  • 原文地址:https://www.cnblogs.com/heqinghui/p/2614241.html
Copyright © 2020-2023  润新知