1 条题解

  • 0
    @ 2024-12-24 9:54:35

    C :

    #include<stdio.h>
    #include<string.h>
    typedef struct Record
    {
      char no[20];
      int source;
    }Record;
    int main()
    {
      int N,M,G;
      int source[20];
      Record student[1000];
      scanf("%d",&N);
      while(N!=0)
      {
        scanf("%d%d",&M,&G);
        int i=0;
        int count=0;
        while(i<M)
        {
          scanf("%d",&source[i]);
          i++;
        }
        for(i=0;i<N;i++)
        {
          char ch[20];
          scanf("%s",ch);
          int n;
          scanf("%d",&n);
          int j=0;
          int grade;
          int sum=0;
          while(j<n)
          {
            scanf("%d",&grade);
            int nn=grade;
            sum+=source[nn-1];
            j++;
          }
          if(sum>=G)
          {
            for(j=count-1;j>=0;j--)
            {
              if(student[j].source<sum)
              {
                strcpy(student[j+1].no,student[j].no);
                student[j+1].source=student[j].source;
              }
              else
              {
                break;
              }
            }
            strcpy(student[j+1].no,ch);
            student[j+1].source=sum;
            count++;
          }
        }
        if(count>0)
              printf("%d\n",count);
        for(i=0;i<count;i++)
        {
          printf("%s %d\n",student[i].no,student[i].source);
        }
        scanf("%d",&N);
      }
    }
    

    C++ :

    #include <cstdio>
    #include <string>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    struct Student {
        int score;
        string id;
    };
    
    Student a[1005];
    
    bool cmp(const Student & l, const Student & r) {
        if (l.score != r.score)
            return l.score > r.score;
        return l.id < r.id;
    }
    
    int main() {
        int n, m, g;
        int score[13];
        while (EOF != scanf("%d", &n) && n > 0) {
            scanf("%d %d", &m, &g);
            for (int i = 1; i <= m; ++i)
                scanf("%d", &score[i]);
            for (int i = 0; i < n; ++i) {
                char str[30];
                scanf("%s", str);
                a[i].id = string(str);
                int m, x, sum = 0;
                scanf("%d", &m);
                while (m--) {
                    scanf("%d", &x);
                    sum += score[x];
                }
                a[i].score = sum;
            }
            sort(a, a + n, cmp);
            vector < Student > ans;
            for (int i = 0; i < n; ++i)
                if (a[i].score >= g)
                    ans.push_back(a[i]);
            printf("%u\n", ans.size());
            for (vector < Student >::iterator it = ans.begin(); it != ans.end(); ++it)
                printf("%s %d\n", it->id.c_str(), it->score);
        }
        return 0;
    }
    
    

    Java :

    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                int n=sc.nextInt();
                if(n==0){
                    return ;
                }
                int m = sc.nextInt();
                int g = sc.nextInt();
    
                int[] gm = new int[m+1];
                for(int i=1;i<gm.length;i++){
                    gm[i]=sc.nextInt();
                }
                String[] str = new String[n];
                int k=0;
                String[] idstr = new String[n];
                int[] idn = new int[n];
                for(int i=0;i<n;i++){
                    idstr[i] = sc.next();
    //                System.out.println(id);
                    idn[i] = sc.nextInt();
                    int[] idnm = new int[idn[i]];
                    int sum=0;
                    for(int j=0;j<idn[i];j++){
                        idnm[j]=sc.nextInt();
                        sum= sum + gm[idnm[j]];
                    }
                    if(sum>=g){
                        str[k++]=idstr[i]+" "+sum;
                    }
                }
    
                if(k==0){
                    System.out.println(0);
                    continue;
                }
                //System.out.println("aaa");
    //          else{
    //              for(int i=0;i<k;i++){
    //                  System.out.println(str[i]);
    //              }
    //          }
    
                String[] strs= new String[k];
                int strm[] = new int[k];
                for(int i=0;i<k;i++){
                    String[] strTemp = new String[2];
                    strTemp = str[i].split(" ");
                    strs[i]=strTemp[0];
                    strm[i]=Integer.parseInt(strTemp[1]);
                }
    
                for(int i=0;i<k-1;i++){
                    for(int j=i+1;j<k;j++){
                        if(strm[i]<strm[j]){
                            strm[i]=strm[i]^strm[j];
                            strm[j]=strm[i]^strm[j];
                            strm[i]=strm[i]^strm[j];
    
                            String s=strs[i];
                            strs[i]=strs[j];
                            strs[j]=s;
                        }
    
                        if(strm[i]==strm[j]){
                            if(strs[i].compareTo(strs[j])>0){
                                strm[i]=strm[i]^strm[j];
                                strm[j]=strm[i]^strm[j];
                                strm[i]=strm[i]^strm[j];
    
                                String s=strs[i];
                                strs[i]=strs[j];
                                strs[j]=s;
                            }
                        }
                    }
                }
    
                System.out.println(k);
                for(int i=0;i<k;i++){
                    System.out.print(strs[i]);
                    System.out.println(" "+strm[i]);
                }
            }
        }
    }
    
    • 1

    信息

    ID
    1295
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者