您的位置:首页 > 其它

(STL自带的排序功能7.1.3)POJ 2379 ACM Rank Table(结构体的排序、初始化)

2013-11-01 09:41 609 查看
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 1010;

struct judge{
int c;
int p;
int r;
int t;
}a[maxn];

struct team{
int id;
int ac;
int t;
int p[25];
int sol[25];
}t[maxn];

bool com_t(const  judge& a,const  judge& b){
return a.t < b.t;
}

bool com_ac(const team& a , const team& b){
if(a.ac != b.ac){
return a.ac > b.ac;
}

if(a.t != b.t){
return a.t < b.t;
}

return a.id < b.id;
}

int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
memset(a,0,sizeof(a));//注意,结构体的初始化
memset(t,0,sizeof(t));

int i;
for(i = 1 ; i <= n ; ++i){
t[i].id = i;
}

for(i = 1 ; i <= m ; ++i){
scanf("%d%d%d%d",&a[i].c,&a[i].p,&a[i].t,&a[i].r);
}

sort(a+1,a+1+m,com_t);

for(i = 1 ; i <= m ; ++i){
int x = a[i].c;
int y = a[i].p;

if(t[x].sol[y]){//如果这道题已经解决了,则进行下一次处理
continue;
}

if(a[i].r){
t[x].ac++;
t[x].t += t[x].p[y]*1200 + a[i].t;
t[x].sol[y] = true;
}else{
t[x].p[y]++;
}
}
sort(t+1,t+1+n,com_ac);//注意这种写法,还有一种写法就是sort(t+1,t+1+n),这是需要在结构体里面重载<运算符

for(i = 1 ; i < n ; ++i){
printf("%d ",t[i].id);
}
printf("%d\n",t
.id);
//		for(i = 1 ; i <= n ; ++i){ 这种写法比较耗时
//			printf((i<n)?"%d ":"%d\n",t[i].id);
//		}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: