QAQ有什么问题?

P1093 [NOIP2007 普及组] 奖学金

SCLBJKD @ 2018-09-26 17:24:23

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,ma,en,t,flag=0,ans[100005][2],ch[100005];
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>ch[i]>>ma>>en;
        ans[i][1]=ch[i]+ma+en;
        ans[i][2]=i;
    }
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
        if(ans[i][1]>ans[j][1])
        {
            t=ans[i][1];
            ans[i][1]=ans[j][1];
            ans[j][1]=t;
            t=ans[i][2];
            ans[i][2]=ans[j][2];
            ans[j][2]=t;
        }
    }
    for(int i=n;i>=n-5;i--)
    {
        if(flag==i) continue;   
        if(ans[i-1][1]<ans[i][1]) cout<<ans[i][2]<<" "<<ans[i][1];
        else if(ans[i-1][1]>ans[i][1])
        {
            cout<<ans[i-1][2]<<" "<<ans[i-1][1]<<endl<<ans[i][2]<<" "<<ans[i][1];
            flag=i-1;
        }
        else
        {
            flag=i-1;
            if(ch[i]>ch[i-1]) cout<<ans[i][2]<<" "<<ans[i][1]<<endl<<ans[i-1][2]<<" "<<ans[i-1][1];
            else if(ch[i]<ch[i-1]) cout<<ans[i-1][2]<<" "<<ans[i-1][1]<<endl<<ans[i][2]<<" "<<ans[i][1];
            else
            {
                if(ans[i][2]>ans[i-1][2]) cout<<ans[i-1][2]<<" "<<ans[i-1][1]<<endl<<ans[i][2]<<" "<<ans[i][1];
                else if(ans[i][2]<ans[i-1][2]) cout<<ans[i][2]<<" "<<ans[i][1]<<endl<<ans[i-1][2]<<" "<<ans[i-1][1];
            }
        } 
    }
}

by kanesada @ 2018-09-26 17:40:41

排序有问题呀…不能只处理总分,要在排序的时候就考虑学号和语文分。

数组也不对,c++的数组a[n]实际上是a[0,1,2,...n-1]这样,n下标是无效的,要多开一位才行。


|