1 条题解
-
0
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
- 上传者