1 条题解

  • 0
    @ 2026-2-9 10:10:19

    C :

    #include<stdio.h>
    #include<stdlib.h>
    typedef long long lint;
    
    struct node{
    	int g[4], L;
    	int flag;
    	lint id;
    };
    typedef struct node record;
    
    record stu[302];
    
    int cmp(const void *a, const void *b){
    	record* aa = (record*)a;
    	record* bb = (record*)b;
    	if(aa->flag!=bb->flag)
    		return (aa->flag>bb->flag)?-1:1;
    	else if(aa->L!=bb->L)
    		return (aa->L>bb->L)?-1:1;
    	else
    		return (aa->id<bb->id)?-1:1;
    }
    
    int main(){
    	int N, i, j;
    	int G[4], LL;
    	for(i=0;i<4;i++)
    		scanf("%d", &G[i]);
    	scanf("%d", &LL);
    	scanf("%d", &N);
    	int  cnt=0;
    	for(i=0;i<N;i++){
    		scanf("%lld", &stu[i].id);
    		stu[i].L = 0;
    		stu[i].flag = 1;
    		for(j=0;j<4;j++){
    			scanf("%d", &stu[i].g[j]);
    			stu[i].L += stu[i].g[j];
    			if(stu[i].g[j]<G[j])
    				stu[i].flag = 0;
    		}
    		if(stu[i].L < LL)
    			stu[i].flag = 0;
    		if(stu[i].flag==1) cnt++;
    	}
    	qsort(stu, N, sizeof(stu[0]), cmp);
    	printf("%d\n", cnt);
    	for(i=0;i<cnt;i++){
    		printf("%013lld %d\n", stu[i].id, stu[i].L);
    	}
    	return 0;
    }
    

    C++ :

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    const int maxn = 310;
    struct student {
        char id[15];
        int sum;
    }stu[maxn];
    bool cmp(student a, student b) {
        if(a.sum != b.sum) return a.sum > b.sum;
        else return strcmp(a.id, b.id) < 0;
    }
    int main() {
    //    freopen("4.in", "r", stdin);
    //    freopen("4.out", "w", stdout);
        int a, b, c, d, L;
        scanf("%d%d%d%d%d", &a, &b, &c, &d, &L);
        int n, ta, tb, tc, td, num = 0;
        char id[15];
        scanf("%d", &n);
        for(int i = 0; i < n ; i++) {
            scanf("%s%d%d%d%d", id, &ta, &tb, &tc, &td);
            int sum = ta + tb + tc + td;
            if(ta >= a && tb >= b && tc >= c && td >= d && sum >= L) {
                strcpy(stu[num].id, id);
                stu[num++].sum = sum;
            }
        }
        sort(stu, stu + num, cmp);
        printf("%d\n", num);
        for(int i = 0; i < num; i++) {
            printf("%s %d\n", stu[i].id, stu[i].sum);
        }
        return 0;
    }
    
    

    Java :

    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    
    public class Main {
    	static int[] pp=new int [5];
    	static int N;
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		ArrayList<St> arr=new ArrayList<St>();
    		for(int i=0;i<5;i++)
    			pp[i]=sc.nextInt();
    		N=sc.nextInt();
    		for(int i=0;i<N;i++){
    			St st=new St(sc.next(), sc.nextInt(), sc.nextInt(),
    					sc.nextInt(), sc.nextInt());
    			if(st.A>=pp[0]&&st.B>=pp[1]&&st.C>=pp[2]&&
    					st.D>=pp[3]&&st.E>=pp[4])
    				arr.add(st);
    		}
    		Collections.sort(arr);
    		System.out.println(arr.size());
    		for(int i=arr.size()-1;i>=0;i--)
    			System.out.println(arr.get(i));
    	}
    
    }
    class St implements Comparable<St>{
    	String name;
    	int A;
    	int B;
    	int C;
    	int D;
    	int E;
    	St(String s,int a,int b,int c,int d){
    		name=s;
    		A=a;
    		B=b;
    		C=c;
    		D=d;
    		E=a+b+c+d;
    	}
    	@Override
    	public int compareTo(St o) {
    		if(this.E!=o.E)
    		return this.E-o.E;
    		else return o.name.compareTo(this.name);
    	}
    	@Override
    	public String toString() {
    		return name+" "+E;
    	}
    }
    
    • 1

    信息

    ID
    941
    时间
    1000ms
    内存
    64MiB
    难度
    8
    标签
    递交数
    23
    已通过
    4
    上传者