Hdu 1084 What Is Your Grade?解题报告

本文介绍了一个C++程序,该程序能够读取学生的成绩和提交时间,然后根据特定规则为每个学生分配等级,并按指定顺序输出这些等级。程序使用了结构体、数组、条件判断和排序算法。
#include<iostream>
#include
<vector>
#include
<string> 
#include
<algorithm>
using namespace std;
 
struct Grade
{
    
int nums;
    
int grade;
    
string times;
    
int index;
}
;

vector 
<Grade> g;
int cnt[6]; 
int n;

bool cmp1(Grade a, Grade b)
{
    
if (a.nums==b.nums)
        
return a.times<b.times;
    
else
        
return a.nums>b.nums;
}


bool cmp2(Grade a, Grade b)
{
    
return a.index<b.index;
}


void getGrade()
{
    
int cnt2[6]={0};

    
for(int i=0;i<n;i++)
    
{
        
if (g[i].nums==5
            g[i].grade
=100;
        
else if (g[i].nums==0)
            g[i].grade
=50;
        
else
        
{
            
int k=g[i].nums;
            
if (cnt2[k]<cnt[k])
            
{
                g[i].grade
=55+k*10;
                cnt2[k]
++;
            }

            
else
                g[i].grade
=50+k*10;
        }

    }

}


bool run()
{
    cin 
>> n;
    
if (n<0return false;
    g.resize(n);
 
    
int i;
    
for(i=0;i<6;i++) cnt[i]=0;
    
    
for(i=0;i<n;i++)
    
{
        cin
>>g[i].nums >>g[i].times;
        g[i].index
=i;
        cnt[g[i].nums]
++;
    }


    sort(g.begin(),g.end(),cmp1);
    
    
for(i=0;i<6;i++) cnt[i]/=2;
    getGrade();

    sort(g.begin(),g.end(),cmp2);
    
    
for(i=0;i<n;i++) cout << g[i].grade << endl;    

    cout
<<endl;

    
return true;
}


int main() 
{    
    
while(run());    
    
return 0
}

排序的一般方法,还要一点细心。方便起见,用用全局的数组,变量等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值