好奇怪的表达方式,这道题的英文给跪了
第三行的序列居然是给出依次要进行比较的老鼠的标号。
11 3 25 18 0 46 37 3 19 22 57 56 10 6 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; else rank[0]=1; for(int i=0;i<np;i++){ if(i!=0) printf(" "); printf("%d",rank[i]); } return 0; }