您的位置:首页 > 其它

hdu 1084 What Is Your Grade? -水题

2017-12-31 19:59 519 查看
链接:1084

2017年竟然以一道水题收尾。。。

大概意思:

有5道题,作对5题得100分,一题不对得50分,其余情况得n*10+50分,n是题数,在1至4题的人中,每种题数按时间排序的前一半人有5分加分

直接根据题数分类,然后按照时间顺序将各个分类排序,时间直接使用string处理按字典序排序。

代码:

#include<bits/stdc++.h>
using namespace std;

struct node{
int u,n;
string ti;
node(int a=0,int b=0,string c=0):u(a),n(b),ti(c){}
bool operator < (node x){
return ti<x.ti;
}
};

vector<node> q[7];
int num[110]; //存成绩

int main(){
int n,u;
string v;
while(cin>>n&&n>0){
memset(num,0,sizeof(num));
for(int i=0;i<7;i++)q[i].clear();
for(int i=0;i<n;i++){
cin>>u>>v;
q[u].push_back(node(i,u,v));
}
for(int i=0;i<q[0].size();i++)num[q[0][i].u]=50;
for(int i=1;i<5;i++){
sort(q[i].begin(),q[i].end());
for(int j=0;j<q[i].size();j++)num[q[i][j].u]=i*10+50;
if(q[i].size()==1)num[q[i][0].u]+=5;
else for(int j=0;j<q[i].size()/2;j++)num[q[i][j].u]+=5;
}
for(int i=0;i<q[5].size();i++)num[q[5][i].u]=100;
for(int i=0;i<n;i++)cout<<num[i]<<endl;
cout<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: