90分,第8个点

P1093 [NOIP2007 普及组] 奖学金

szbxmz @ 2018-07-07 11:50:20

#include<bits/stdc++.h>
int n,i,j,a[301][5],ma[301][5],max1,temp;
using namespace std;
int main(){
    freopen("scholar.in","r",stdin);
    freopen("scholar.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        for(j=2;j<=4;j++){
            scanf("%d",&a[i][j]);
        }
        a[i][1]=i;
        a[i][5]=a[i][2]+a[i][3]+a[i][4];
    }
    max1=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            if(a[i][5]>max1){
                max1=a[i][5];
                ma[1][1]=i;
                ma[1][2]=a[i][5];
                ma[1][3]=a[i][2];
                }
            }
        max1=0;
    for(i=1;i<=n;i++)   
        for(j=1;j<=n;j++){
            if(a[i][5]>max1){
                if(i!=ma[1][1]){
                max1=a[i][5];
                ma[2][1]=i;
                ma[2][2]=a[i][5];
                ma[2][3]=a[i][2];
                }
            }
        }
        max1=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            if(a[i][5]>max1){
                if(i!=ma[1][1] && i!=ma[2][1]){
                max1=a[i][5];
                ma[3][1]=i;
                ma[3][2]=a[i][5];
                ma[3][3]=a[i][2];
                }
            }
        }
        max1=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            if(a[i][5]>max1){
                if(i!=ma[1][1] && i!=ma[2][1] && i!=ma[3][1]){
                max1=a[i][5];
                ma[4][1]=i;
                ma[4][2]=a[i][5];
                ma[4][3]=a[i][2];
                }
            }
        }
        max1=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            if(a[i][5]>max1){
                if(i!=ma[1][1] && i!=ma[2][1] && i!=ma[3][1] && i!=ma[4][1]){
                max1=a[i][5];
                ma[5][1]=i;//student number
                ma[5][2]=a[i][5];//All
                ma[5][3]=a[i][2];//China
                }
            }
        }
    for(i=1;i<=4;i++)
    for(j=1;j<=5;j++){
        if(ma[i][2]==ma[j][2]){
            if(ma[i][3]>ma[j][3]){
                temp=ma[j][3];
                ma[j][3]=ma[i][3];
                ma[i][3]=temp;
                temp=ma[j][2];
                ma[j][2]=ma[i][2];
                ma[i][2]=temp;
                temp=ma[j][1];
                ma[j][1]=ma[i][1];
                ma[i][1]=temp;
            }
            if(ma[i][3]==ma[j][3] && && ma[i][1]<ma[j][1]){
                temp=ma[j][3];
                ma[j][3]=ma[i][3];
                ma[i][3]=temp;
                temp=ma[j][2];
                ma[j][2]=ma[i][2];
                ma[i][2]=temp;
                temp=ma[j][1];
                ma[j][1]=ma[i][1];
                ma[i][1]=temp;
            }
        }
    }
    for(i=1;i<=5;i++){
        printf("%d %d\n",ma[i][1],ma[i][2]);
    }
    return 0;
}

大佬求教,输出中第四排第一个和第五排第一个反了(143和171)


by mabangjie @ 2018-07-24 13:15:31

@魏曙东

!太复杂了!


by mabangjie @ 2018-07-24 13:15:45

@魏曙东

#include<bits/stdc++.h>
using namespace std;
struct gggg
{
       int x;
       int y;
       int z;
}a[500];

bool cmp(gggg a,gggg b)
{
     if(a.x!=b.x)
       return a.x>b.x;
     if(a.y!=b.y)
       return a.y>b.y;
     return a.z<b.z; 
}

int main()
{
    int n,yu,shu,wai;
    cin>>n; 
    for(int i=0;i<=n-1;i++)
    {
       cin>>yu>>shu>>wai;
       a[i].x=yu+shu+wai;
       a[i].y=yu;
       a[i].z=i+1;
    }
    sort(a,a+n,cmp);
    for(int i=0;i<=4;i++)
       cout<<a[i].z<<" "<<a[i].x<<endl;
    return 0;
}

|