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. MFC让控件随窗口大小而改变

    转载自http://blog.csdn.net/chw1989/article/details/7488711 大小和位置都改变(亲测可行) 1.首先为窗体类添加CRect m_rect,该成员变量用 ...

  2. (转) 学习C++ -> 引用( References )

    学习C++ -> 引用( References ) 一.引用的介绍    引用就是某一变量(目标)的一个别名, 相当于同一个人有了两个名字, 无论喊哪一个名字实际上都是指的同一个人. 同样, 在 ...

  3. PHP根据经纬度,计算2点之间的距离的2种方法

    计算地球表面2点之间的球面距离 /** * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return int */ fun ...

  4. automation studio 6.0 破解版 32位

    破解软件在iso文件的patch目录下 链接:http://pan.baidu.com/s/1o8KR7rc 密码:y87g   

  5. 【5】将服务部署到本机(Ubuntu14.04)

    首先,先将文件复制到指定的文件夹 我这里选择在/var下面新建一个www的文件夹来存放 复制BLOG文件夹的内容到www文件夹下 sudo cp -r /home/jakeychen/Jakey/Bl ...

  6. html 标签释义

    position  位置  给....定位   作用:定位 position:fixed  锁定游览器位置 如右下角弹窗 absolute  绝对定位    游览器左上角      position: ...

  7. log4j 将日志记录到数据库

    需要以下jar包: ---log4j commons-loggin-1.1.1.jar log4j-1.2.16.jar ---mysql mysql-connector-java-5.1.15-bi ...

  8. CSS开发经验

    1.尽量用class来定义样式.尽量少使用  .div1 ul li{}这样的样式下去,因为如果li里面还有<div><ul><li>这些元素的话会造成干扰,应该给 ...

  9. SignalR在Xamarin Android中的使用

    原文:SignalR在Xamarin Android中的使用 ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 ...

  10. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...