| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
很简单的一道题,只要读懂题目,其他不是问题/***********************************************************************
Copyright (c) 2015,wangzp
All rights no reserved.
Name: 《A Contesting Decision》In PEKING UNIVERSITY ACM
ID: PROBLEM 1581
问题简述: 求几个参赛队伍中罚分最少的队伍,规则如下:
1.提交1次通过时间即为罚的分数;
2.提交问题没有通过,不管次数为多少次,罚分为0;
3.提交问题通过,但是大于等于2次,没多一次,就多罚20分;
4.先看答对题目最多,然后再看总罚分数最少的队伍即为胜利者。
Date: Sep 28, 2015
***********************************************************************/
#include<stdio.h>
#include <string.h>
#define MAX_SCORE 10000000
#define CONTESTER 100
typedef struct {
char name[20];
int test_num[4];
int test_time[4];
int num_sloved;
int sum_score;
}CONTEST;
/*根据规则,计算罚分*/
int contest_fun(int num,int time)
{
int sum = 0;
if (num == 1 && time != 0)
{
sum += time;
}
else if (num > 1 && time != 0)
{
sum = time;
while (num > 1)
{
sum += 20;
num--;
}
}
return sum;
}
int main(void)
{
CONTEST contest_sub[CONTESTER];
int min_score,index,sloved;
int i,j,n;
memset(contest_sub,NULL,CONTESTER*sizeof(CONTEST));
min_score = MAX_SCORE;
index = 0;
sloved = -1;
scanf("%d",&n);
for (i = 0;i < n;i++)
{
scanf("%s",contest_sub[i].name);
for (j = 0;j < 4;j++)
{
scanf("%d",&contest_sub[i].test_num[j]);
scanf("%d",&contest_sub[i].test_time[j]);
if (contest_sub[i].test_time[j] != 0)
{
contest_sub[i].num_sloved++;
}
contest_sub[i].sum_score += contest_fun(contest_sub[i].test_num[j],contest_sub[i].test_time[j]);
}
if (contest_sub[i].num_sloved >= sloved)
{
if (contest_sub[i].sum_score <= min_score)
{
sloved = contest_sub[i].num_sloved;
min_score = contest_sub[i].sum_score;
index = i;
}
}
}
printf("%s %d %d\n",contest_sub[index].name,contest_sub[index].num_sloved,contest_sub[index].sum_score);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator