What Is Your Grade?

Problem 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

 
Author
lcy
 
     题目不是很难,注意一下输出格式还有一些别的东西就可以了!我下面写的程序貌似长了一点,不过意思明了,凑合着看吧!很久没写了,练练手!
#include <iostream>
#include <algorithm>
using namespace std;
const int SIZE = 101; typedef struct /*结构体,用于存储输入的数据*/
{
int solved; /*解决问题的数目*/
int located; /*学生的位置*/
int h, m, s; /*所花费的时间*/
int soc; /*最终的成绩*/
}time; bool cmp(time &bi1, time &bi2) /*比较函数,用于排序*/
{
if (bi1.h > bi2.h) return false;
else if (bi1.h < bi2.h) return true;
else
{
if (bi1.m > bi2.m) return false;
else if (bi1.m < bi2.m) return true;
else
{
if (bi1.s > bi2.s) return false;
else if (bi1.s < bi2.s) return true;
}
}
} int main()
{
int num;
time stu[SIZE];
time sortArr[4][SIZE];
int p, q , r, k, i;
while((cin >> num) && (num >= 0))
{
p = q = r = k = 0;
for (i = 0; i < num; i++)
{
cin >> stu[i].solved;
scanf ("%d:%d:%d", &stu[i].h, &stu[i].m, &stu[i].s);
stu[i].located = i; /*记录下输入时的位置*/ /*下面的思路就是:分数能处理的就处理,如解决了5道题(100)和0道题(50)
不能处理的话,我们先将该数分类存入一个数组,之后再做处理
*/
if (stu[i].solved == 5)
{
stu[i].soc = 100;
}
if (stu[i].solved == 4)
{
sortArr[0][p] = stu[i];
p++;
}
if (stu[i].solved == 3)
{
sortArr[1][q] = stu[i];
q++;
}
if (stu[i].solved == 2)
{
sortArr[2][r] = stu[i];
r++;
}
if (stu[i].solved == 1)
{
sortArr[3][k] = stu[i];
k++;
}
if (stu[i].solved == 0)
{
stu[i].soc = 50;
}
} if (p >= 1)
{
sort (sortArr[0], sortArr[0] + p, cmp); /*先排序,按照耗时从小到大排序*/
for (i = 0; i < p / 2; i++) /*前半部分得高分*/
{
stu[sortArr[0][i].located].soc = 95;
}
for (; i < p; i++) /*后半部分得低分*/
{
stu[sortArr[0][i].located].soc = 90;
}
}
/*以下类似*/
if (q >= 1)
{
sort (sortArr[1], sortArr[1] + q, cmp);
for (i = 0; i < q / 2; i++)
{
stu[sortArr[1][i].located].soc = 85;
}
for (; i < q; i++)
{
stu[sortArr[1][i].located].soc = 80;
}
} if (r >= 1)
{
sort (sortArr[2], sortArr[2] + r, cmp);
for (i = 0; i < r / 2; i++)
{
stu[sortArr[2][i].located].soc = 75;
}
for (; i < r; i++)
{
stu[sortArr[2][i].located].soc = 70;
}
} if (k >= 1)
{
sort (sortArr[3], sortArr[3] + k, cmp);
for (i = 0; i < k / 2; i++)
{
stu[sortArr[3][i].located].soc = 65;
}
for (; i < k; i++)
{
stu[sortArr[3][i].located].soc = 60;
}
} for (i = 0; i < num; i++)
{
cout << stu[i].soc << endl;
}
cout << endl;
}
system ("pause");
return 0;
}

杭电OJ—— 1084 What Is Your Grade?的更多相关文章

  1. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  2. 杭电oj 2095 & 异或^符号在C/C++中的使用

    异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果. 值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终 ...

  3. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  4. 杭电oj 4004---The Frog Games java解法

    import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...

  5. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

  6. 杭电oj————2057(java)

    question:A+ B again 思路:额,没啥思路/捂脸,用java的long包里的方法,很简单,只是有几次WA,有几点要注意一下 注意:如果数字有加号要删除掉,这里用到了正则表达式“\\+” ...

  7. 爬取杭电oj所有题目

    杭电oj并没有反爬 所以直接爬就好了 直接贴源码(参数可改,循环次数可改,存储路径可改) import requests from bs4 import BeautifulSoup import ti ...

  8. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  9. 杭电OJ——1007 Quoit Design(最近点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground? Quoit is a game in whic ...

随机推荐

  1. Oracle中MERGE语句的使用

    Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的 ...

  2. 创建ListView的基本步骤

    参考<疯狂android讲义>第2.5节P94 1.创建一个或者多个ListView <LinearLayout xmlns:android="http://schemas ...

  3. du与df为什么有时候会有差异

    以下仅为本人理解,非官方! du命令:统计父目录的目录项,若目录项存在,则进行查找 df命令:统计inode节点,根据inode节点存储的块大小进行统计 差异原因: 当一个文件被进程调用后,复制文件到 ...

  4. C#代码实现,确保windows程序只有一个实例(instance)

    static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...

  5. [原]bochs+dos6.22汇编环境

    1.下载安装bochs 下载MS-DOS http://files.cnblogs.com/allbymyself/DOS6.22.rar 下载Masm5.0 2.bochs配置 1)安装目录下的bx ...

  6. javascript之对象

    一.创建对象 1.对象直接量. var point = { x:0,y:0 }; //point就是一个对象,跟C#不同,它不需要一定有类才能创建对象. 2.通过new创建对象 var d = new ...

  7. Linux的环境变量配置

    以下都是环境变量相关的配置文件 1)/etc/enviroment 是系统的环境变量. (2)/etc/profile: 是所有用户的环境变量.当用户第一次登录时,该文件被执行. 并从/etc/pro ...

  8. 2015第10周四-CSS小结

    这两天做前台页面发现个人在CSS前端方法很多基础知识都忘了,晚上又搜索学习了下,把相关内容摘录总结. CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector {declara ...

  9. 剑指offer-面试题9.斐波拉契数列

    题目一:写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列的定义如下: { n=; f(n)={ n=; { f(n-)+f(n-) n>; 斐波拉契问题很明显我们会想到用递归来解决: ...

  10. FZU1862(线段树 或者 DP)

    Problem 1862 QueryProblem Accept: 100    Submit: 249Time Limit: 2000 mSec    Memory Limit : 32768 KB ...