`
wsql
  • 浏览: 11806429 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Hdu 1084 What Is Your Grade?解题报告

 
阅读更多
#include<iostream>
#include
<vector>
#include
<string>
#include
<algorithm>
usingnamespacestd;

structGrade
...{
intnums;
intgrade;
stringtimes;
intindex;
}
;

vector
<Grade>g;
intcnt[6];
intn;

boolcmp1(Gradea,Gradeb)
...{
if(a.nums==b.nums)
returna.times<b.times;
else
returna.nums>b.nums;
}


boolcmp2(Gradea,Gradeb)
...{
returna.index<b.index;
}


voidgetGrade()
...{
intcnt2[6]=...{0};

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

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

}

}


boolrun()
...{
cin
>>n;
if(n<0)returnfalse;
g.resize(n);

inti;
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;

returntrue;
}


intmain()
...{
while(run());
return0;
}

排序的一般方法,还要一点细心。方便起见,用用全局的数组,变量等。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics