杭电1084What Is Your Grade?
2016-07-19 18:03
309 查看
H - What Is Your Grade?(结构体+(sort))
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
“Point, point, life of student!”
This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course.
There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only
when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50.
Note, only 1 student will get the score 95 when 3 students have solved 4 problems.
I wish you all can pass the exam!
Come on!
Input
Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed
time). You can assume that all data are different when 0<p.
A test case starting with a negative integer terminates the input and this test case should not to be processed.
Output
Output the scores of N students in N lines for each case, and there is a blank line after each case.
Sample Input
4
5 06:30:17
4 07:31:27
4 08:12:12
4 05:23:13
1
5 06:30:17
-1
Sample Output
100
90
90
95
100
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node{
int p;
char st[20];
int r;
int mark;
}num[110];
bool cmp1(node a,node b)
{
if(a.p==b.p)
return strcmp(a.st,b.st)<0;
else
return a.p>b.p;
}
bool cmp2(node a,node b)
{
return a.r<b.r;
}
int main()
{
int n,i,a,b,c,j;
int l[10],sum[10];
while(scanf("%d",&n)&&(n>0))
{
memset(l,0,sizeof(l));
for(i=0;i<n;i++)
{
scanf("%d%s",&num[i].p,num[i].st);
num[i].r=i;
l[num[i].p]++;
}
sum[5]=l[5];
for(i=4;i>=0;i--)
sum[i]=sum[i+1]+l[i];
sort(num,num+n,cmp1);
for(i=0;i<n;i++)
{
num[i].mark=50+num[i].p*10;
if(num[i].p>=1&&num[i].p<5&&i<(sum[num[i].p+1]+l[num[i].p]/2))
num[i].mark+=5;
}
sort(num,num+n,cmp2);
for(i=0;i<n;i++)
printf("%d\n",num[i].mark);
printf("\n");
}
return 0;
}
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
“Point, point, life of student!”
This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course.
There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only
when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50.
Note, only 1 student will get the score 95 when 3 students have solved 4 problems.
I wish you all can pass the exam!
Come on!
Input
Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed
time). You can assume that all data are different when 0<p.
A test case starting with a negative integer terminates the input and this test case should not to be processed.
Output
Output the scores of N students in N lines for each case, and there is a blank line after each case.
Sample Input
4
5 06:30:17
4 07:31:27
4 08:12:12
4 05:23:13
1
5 06:30:17
-1
Sample Output
100
90
90
95
100
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node{
int p;
char st[20];
int r;
int mark;
}num[110];
bool cmp1(node a,node b)
{
if(a.p==b.p)
return strcmp(a.st,b.st)<0;
else
return a.p>b.p;
}
bool cmp2(node a,node b)
{
return a.r<b.r;
}
int main()
{
int n,i,a,b,c,j;
int l[10],sum[10];
while(scanf("%d",&n)&&(n>0))
{
memset(l,0,sizeof(l));
for(i=0;i<n;i++)
{
scanf("%d%s",&num[i].p,num[i].st);
num[i].r=i;
l[num[i].p]++;
}
sum[5]=l[5];
for(i=4;i>=0;i--)
sum[i]=sum[i+1]+l[i];
sort(num,num+n,cmp1);
for(i=0;i<n;i++)
{
num[i].mark=50+num[i].p*10;
if(num[i].p>=1&&num[i].p<5&&i<(sum[num[i].p+1]+l[num[i].p]/2))
num[i].mark+=5;
}
sort(num,num+n,cmp2);
for(i=0;i<n;i++)
printf("%d\n",num[i].mark);
printf("\n");
}
return 0;
}
相关文章推荐
- Retrofit框架请求SOAP WebService
- EEG montage
- CString与char *互转总结
- HDU:2037 今年暑假不AC(简单贪心+结构体)
- iOS AVPlayer 使用详解
- iOS开发使用sdWebImage实现对tableView的cell加载图片淡入动画
- 数组拼接成字符串
- redis集群设置密码详解
- Java 并发工具包 java.util.concurrent 用户指南
- git基本使用
- 解决android6.0版本无法调图片
- DPM中global.m从linux移植到windows的改动in 4.01.1(没写源代码,可自行下载)
- 假设检验
- cocos2d-x 3.x sprite使用scale以后获取宽高
- 第二届移动互联网大会总结
- 人生啊
- linux 下查看机器是cpu是几核的
- mybatis中自建的类型别名
- 高级语言调用系统命令
- 暗码 手机拨号启动隐藏应用