Skip to content

AdvancedLevel_C++/1056. Mice and Rice Suggestion #177

@Hallucinat1on

Description

@Hallucinat1on

用res记录每层参与比赛的老鼠编号,胜出的老鼠进入下一层,直到该层只剩一只老鼠

#include<iostream>
#include<vector>
using namespace std;

int np,ng,cnt,p,w[1111],ra[1111]; 
//cnt记录层数,ra记录老鼠到达的最高层数(用于计算排名)
vector<int>res[1111];

int main() {
    cin>>np>>ng;
    for (int i=0;i<np;i++)cin>>w[i];
    for (int i=0;i<np;i++) {
        cin>>p;
        res[0].push_back(p);
    }
    while (res[cnt].size()>1) {
        int max_w=0;
        for (int i=0;i<res[cnt].size();i++) {
            if (w[res[cnt][max_w]]<w[res[cnt][i]])max_w=i;
            if ((i+1)%ng==0||(i+1)==res[cnt].size()) {
                res[cnt+1].push_back(res[cnt][max_w]);  //胜者进入下一层
                ra[res[cnt][max_w]]=cnt+1;  //记录最高层数
                max_w=i+1;
            }
        }
        cnt++;
    }
    for (int i=0;i<np;i++) {
        cout<<res[ra[i]+1].size()+1;  //排名为高层人数加一
        if (i<np-1)cout<<" ";
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions