1056. Mice and Rice (25)
Mice and Rice is the name of a programming contest in which each programmer must write a piece of code to control the movements of a mouse in a given map. The goal of each mouse is to eat as much rice as possible in order to become a FatMouse.
First the playing order is randomly decided for NP programmers. Then every NG programmers are grouped in a match. The fattest mouse in a group wins and enters the next turn. All the losers in this turn are ranked the same. Every NGwinners are then grouped in the next match until a final winner is determined.
For the sake of simplicity, assume that the weight of each mouse is fixed once the programmer submits his/her code. Given the weights of all the mice and the initial playing order, you are supposed to output the ranks for the programmers.
Input Specification:
Each input file contains one test case. For each case, the first line contains 2 positive integers: NP and NG (<= 1000), the number of programmers and the maximum number of mice in a group, respectively. If there are less than NG mice at the end of the player's list, then all the mice left will be put into the last group. The second line contains NP distinct non-negative numbers Wi (i=0,...NP-1) where each Wiis the weight of the i-th mouse respectively. The third line gives the initial playing order which is a permutation of 0,...NP-1 (assume that the programmers are numbered from 0 to NP-1). All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the final ranks in a line. The i-th number is the rank of the i-th programmer, and all the numbers must be separated by a space, with no extra space at the end of the line.
Sample Input:
11 3
25 18 0 46 37 3 19 22 57 56 10
6 0 8 7 10 5 9 1 4 2 3
Sample Output:
5 5 5 2 5 5 5 3 1 3 5
#include<stdio.h>
#include<vector>
#include<map>
#include<algorithm>
using namespace std; struct MyStruct
{
int ID;
int wight;
}; struct MyRank
{
int time;
int ID;
}; vector<MyRank> ranking; void fun(vector<MyStruct> vv ,int Ng)
{
vector<MyStruct> tem;
for(int i = ;i< vv.size(); i++)
{
if( i + Ng - < vv.size())
{
int MAX = -;
int index;
int j;
for(j = i ;j < i + Ng ;j++)
{
if(vv[j].wight > MAX)
{
MAX = vv[j].wight;
index = j;
}
}
i = j-;
tem.push_back(vv[index]);
++ranking[vv[index].ID].time;
}
else
{
int MAX = -;
int index;
int j;
for(j = i ;j < vv.size() ;j++)
{
if(vv[j].wight > MAX)
{
MAX = vv[j].wight;
index = j;
}
}
i = j;
tem.push_back(vv[index]);
++ranking[vv[index].ID].time;
}
} if(tem.size() > )
fun(tem,Ng);
} int cmp(MyRank a,MyRank b)
{
return a.time > b.time ;
} int main()
{
int Np,Ng,i;
MyStruct tem;
MyRank Rtem;
int index;
scanf("%d%d",&Np,&Ng);
vector<MyStruct> v1,v2;
for(i = ;i< Np ;i++)
{
scanf("%d",&tem.wight);
tem.ID = i;
Rtem.ID = i;
Rtem.time = ;
ranking.push_back(Rtem);
v1.push_back(tem);
}
for(i = ;i< Np ;i++)
{
scanf("%d",&index);
v2.push_back(v1[index]);
} fun(v2,Ng); sort(ranking.begin(),ranking.end(),cmp);
int result[];
int j = ;
for(i = ;i <ranking.size();i++)
{
result[ranking[i].ID] = j;
int count = ;
int tem = ranking[i].time;
while(i+ <ranking.size()&&tem == ranking[i+].time)
{
++i;
++ count;
result[ranking[i].ID] = j;
}
j = j+count;
} for(i = ;i < Np ;i++)
{
if(i == ) printf("%d",result[i]);
else printf(" %d",result[i]);
}
printf("\n");
return ;
}
1056. Mice and Rice (25)的更多相关文章
- pat 甲级 1056. Mice and Rice (25)
1056. Mice and Rice (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Mice an ...
- PAT 甲级 1056 Mice and Rice (25 分) (队列,读不懂题,读懂了一遍过)
1056 Mice and Rice (25 分) Mice and Rice is the name of a programming contest in which each program ...
- PAT Advanced 1056 Mice and Rice (25) [queue的⽤法]
题目 Mice and Rice is the name of a programming contest in which each programmer must write a piece of ...
- 1056 Mice and Rice (25分)队列
1.27刷题2 Mice and Rice is the name of a programming contest in which each programmer must write a pie ...
- PAT甲题题解-1056. Mice and Rice (25)-模拟题
有n个老鼠,第一行给出n个老鼠的重量,第二行给出他们的顺序.1.每一轮分成若干组,每组m个老鼠,不能整除的多余的作为最后一组.2.每组重量最大的进入下一轮.让你给出每只老鼠最后的排名.很简单,用两个数 ...
- PAT (Advanced Level) 1056. Mice and Rice (25)
简单模拟. #include<iostream> #include<cstring> #include<cmath> #include<algorithm&g ...
- 【PAT甲级】1056 Mice and Rice (25 分)
题意: 输入两个正整数N和M(<=1000),接着输入两行,每行N个数,第一行为每只老鼠的重量,第二行为每只老鼠出战的顺序.输出它们的名次.(按照出战顺序每M只老鼠分为一组,剩余不足M只为一组, ...
- pat1056. Mice and Rice (25)
1056. Mice and Rice (25) 时间限制 30 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Mice and ...
- PAT 1056 Mice and Rice[难][不理解]
1056 Mice and Rice(25 分) Mice and Rice is the name of a programming contest in which each programmer ...
随机推荐
- cocos2d-x调度器原理
程序运行后每达到一帧的时间间隔就会执行一次mainLoop void CCDisplayLinkDirector::mainLoop(void) { //判断是否需要释放CCDirector,通常游戏 ...
- 【Android Studio 小技巧】一键查看文件方法结构目录File Structure
看源代码的时候,如果可以查看class中的所有方法,可以提高效率.Android Studio 中可以使用快捷键一键显示所有方法的目录. Mac: command + fn + F12 (在mac中的 ...
- oracle 排序
1.ORDER BY 中关于NULL的处理 缺省处理,Oracle在Order by 时认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前. 当然,你也可以使用nulls f ...
- 【原】CentOS7上安装Xwiki8.2.1
环境 CentOS 7内核版本为 3.10.0-327.el7.x86_64JDK8(jdk1.8.0_101)+Tomcat7.0.67+MySQL5.6.32XWIKI 8.2.1 xwiki- ...
- [改善Java代码]覆写equals方法时不要识别不出自己
建议45: 覆写equals方法时不要识别不出自己 我们在写一个JavaBean时,经常会覆写equals方法,其目的是根据业务规则判断两个对象是否相等,比如我们写一个Person类,然后根据姓名判断 ...
- poj 1364 差分约束
思路:设dis[i]为从0点到第i点的序列总和.那么对于A B gt k 来讲意思是dis[B+A]-dis[A]>k; 对于A B lt k来讲就是dis[B+A]-dis[A]<k; ...
- 【原创】 windows下开发软件推荐
1. 数据库查看器工具 navicat.exe
- mysql 5.7 root password 过期
重新修改root密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); ALTER USER 'root'@localhost' P ...
- BZOJ 2763
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2073 Solved: 790[Submit][Statu ...
- 我的jquery之路
不知不觉jquery已经看完了. 以前不知道jquery是什么,现在依然不是很清晰.或许学习的结果就是这样吧,忘记你所学的.