1056. Mice and Rice

来源:互联网 发布:html5 输入框遮挡js 编辑:程序博客网 时间:2024/04/30 09:49

好奇怪的表达方式,这道题的英文给跪了

第三行的序列居然是给出依次要进行比较的老鼠的标号。

11 325 18 0 46 37 3 19 22 57 56 106 0 8 7 10 5 9 1 4 2 3
先比较第6,0,8号老鼠,此为第一组,7,10,5为第二组,后面类推...

机试这样子考察英文抓狂

// 1056. Mice and Rice.cpp: 主项目文件。#include "stdafx.h"#include <cstdio>#include <cstring>const int N=1003;int mice[N],per[N],rank[N];bool used[N];int main(){    int np,ng;scanf("%d%d",&np,&ng);memset(used,0,sizeof(used));for(int i=0;i<np;i++)scanf("%d",mice+i);for(int i=0;i<np;i++)scanf("%d",per+i);int rem=np,groups=np/ng,max=-1,maxf=-1;if(np%ng!=0)groups++;while(rem!=1){for(int i=0;i<np;i++){if(!used[i]){rank[i]=groups+1;used[i]=true;}}int cnt=0,k=0,tt=0;while(k<groups){max=-1,maxf=-1;for(int j=0;j<ng&&tt<rem;j++){if(mice[per[tt]]>max)max=mice[per[tt]],maxf=per[tt];tt++;}used[maxf]=false;per[cnt++]=maxf;k++;}rem=groups;groups=rem/ng;if(rem%ng!=0)groups++;}if(maxf!=-1)rank[maxf]=1;elserank[0]=1;for(int i=0;i<np;i++){if(i!=0)printf(" ");printf("%d",rank[i]);}    return 0;}