1056. Mice and Rice (25)

来源:互联网 发布:淘宝lol神半价 编辑:程序博客网 时间:2024/04/29 06:45

IDEA

1.需要vector:programer,order,used(初始化为0),used值为1的不进入下一轮

2.计算分组数:np%ng==0?group=np/ng:group=np/ng+1;

  以group为循环依据group%ng==0?group=group/ng:group=group/ng+1;group==1则下一次不在循环

3.计算每组的最大值,记录其id,并给其他的赋排名,是当然group+1



CODE

#include<iostream>#include<vector> #include<algorithm>#include<fstream>using namespace std;struct Programmer{int wei;int rank;};int main(){#ifndef ONLINE_JUDGEfreopen("input.txt","r",stdin);#endifint np,ng;cin>>np>>ng;vector<Programmer> vec(np);vector<int> order(np);vector<int> used(np,0);for(int i=0;i<np;i++){cin>>vec[i].wei;}for(int i=0;i<np;i++){cin>>order[i];}int group;np%ng==0?group=np/ng:group=np/ng+1;int max,max_index,count;int flag=1;while(flag){if(group==1){flag=0;} count=0;max=-1;max_index=-1;for(int i=0;i<np;i++){if(used[order[i]]==0){if(count==ng){max=-1;max_index=-1;count=1;}else{count++;}if(vec[order[i]].wei>max){if(max_index!=-1){vec[max_index].rank=group+1;used[max_index]=1;}max=vec[order[i]].wei;max_index=order[i];}else{vec[order[i]].rank=group+1;used[order[i]]=1;}}}group%ng==0?group=group/ng:group=group/ng+1;}vec[max_index].rank=1;for(int i=0;i<np;i++){if(i==0){cout<<vec[i].rank;}else{cout<<" "<<vec[i].rank;}}#ifndef ONLINE_JUDGEfclose(stdin);#endifreturn 0;}


0 0
原创粉丝点击