天天天都是大晴天

PAT 1036. Boys vs Girls

第三个测试点是没有男生的情况

没有测试点是针对男生比女生分高的情况

题目的意思是要把Absent写在对应的行,女生占第一行,男生占第二行我是以为把唯一的最值输出 = = 

#include <iostream>
#include <string>
using namespace std;

struct student
{
    string name;
    char gender;
    string id;
    int grade;
}stu[1000];

int main()
{
    int i,j,n,grade,f_temp=-1,m_temp=-1;
    string name,id;
    char gender;
    int f_max=-1,m_min=101;
    cin>>n;
    //输入数据
    for(i=0;i<n;i++)
    {
        cin>>stu[i].name>>stu[i].gender>>stu[i].id>>stu[i].grade;
    }


    for(i=0;i<n;i++)
    {
        if((stu[i].gender=='F')&&stu[i].grade>=f_max)
        {    
            f_max=stu[i].grade;
            f_temp=i;
        }
    
        else if((stu[i].gender=='M')&&stu[i].grade<=m_min)
        {    
            m_min=stu[i].grade;
            m_temp=i;
        }
    }
    //第一行女生,第二行男生
    if(f_temp==-1)//没有符合条件的女生
    {
        cout<<"Absent"<<endl;
        cout<<stu[m_temp].name<<' '<<stu[m_temp].id<<endl;
        cout<<"NA"<<endl;
    }
    else if(m_temp==-1)//没有符合条件的男生
    {
        
        cout<<stu[f_temp].name<<' '<<stu[f_temp].id<<endl;
        cout<<"Absent"<<endl;
        cout<<"NA"<<endl;
    }
    else if(m_min>f_max)
    {
        cout<<"Absent"<<endl;
        cout<<stu[f_temp].name<<' '<<stu[f_temp].id<<endl;
        cout<<stu[m_temp].name<<' '<<stu[m_temp].id<<endl;
        cout<<"NA"<<endl;
    }
    else 
    {
        cout<<stu[f_temp].name<<' '<<stu[f_temp].id<<endl;
        cout<<stu[m_temp].name<<' '<<stu[m_temp].id<<endl;
        cout<<f_max-m_min<<endl;
    }
    

    return 0;
}

posted on 2012-08-15 15:56  天天天都是大晴天  阅读(283)  评论(0)    收藏  举报