Choose ACMer
YOYO
posted @ 2009年5月12日 18:30
in 【ICPC】解题报告
, 2111 阅读
FJNU2061:http://acm.fjnu.edu.cn/show?problem_id=2061
按照条件直接模拟即可。数据貌似有问题囧,最后改成double才过。
-
#include<iostream>
-
#include<string>
-
#include<algorithm>
-
using namespace std;
-
-
int m,n;
-
-
typedef struct{
-
string name;
-
bool sex;
-
int grade;
-
double score;
-
double cscore[15];
-
}player;
-
-
bool cmp(player a, player b){
-
if(a.score>b.score) return true;
-
if(a.score<b.score) return false;
-
if(!a.sex&&b.sex) return true;
-
if(a.sex&&!b.sex) return false;
-
if(a.grade>b.grade) return true;
-
if(a.grade<b.grade) return false;
-
return a.name<b.name;
-
}
-
-
int main(){
-
while(cin>>n>>m){
-
player p[1005];
-
int cnum[15];
-
char ch;
-
int i,j;
-
memset(cnum,0,sizeof(cnum));
-
for(i=0; i<m; i++){
-
cin>>p[i].name;
-
cin>>ch;
-
p[i].sex = ch=='F'?false:true;
-
cin>>p[i].grade;
-
for(j=0; j<n; j++){
-
cin>>p[i].cscore[j];
-
cnum[j] += p[i].cscore[j];
-
}
-
}
-
for(i=0; i<m; i++){
-
p[i].score = 0;
-
for(j=0; j<n; j++){
-
p[i].cscore[j] /= cnum[j];
-
}
-
sort(p[i].cscore, p[i].cscore+n);
-
for(int k=2; k<n; k++){
-
p[i].score += p[i].cscore[k];
-
}
-
}
-
sort(p,p+m,cmp);
-
if(m>50)m=50;
-
for(i=0; i<m; i++){
-
cout<<p[i].name<<endl;
-
}
-
}
-
return 0;
-
}
- 无匹配