您的位置:首页 > 其它

Hdu 1084 What Is Your Grade?解题报告

2008-05-10 17:36 405 查看

#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<0) return 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;


}



排序的一般方法,还要一点细心。方便起见,用用全局的数组,变量等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: