らての精進日記

修行をします

aoj0505:Questionnaire

解法

構造体に旅行候補の番号と、そこに行きたい人数を詰め込んだ。そして比較関数を作ってsortした。(行きたい人数の多さを基準に並べ替えて、もしそれが同じなら番号の小ささを基準に並び替える)

コード

#include<bits/stdc++.h>
using namespace std;

int N,M;
struct data{
    int total,id;
    data(int a,int b):total(a),id(b){}
};
bool comp(const data &a,const data &b){
    return a.total!=b.total?a.total>b.total:a.id<b.id;
}
void solve(){
    int cnt[100]={0};
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            int t;cin>>t;
            cnt[j]+=t;
        }
    }

    vector<data>V;
    for(int i=0;i<M;i++)V.push_back(data(cnt[i],i));
    sort(V.begin(),V.end(),comp);
    for(int i=0;i<M;i++){
        cout<<V[i].id+1<<(i!=M-1?" ":"\n");
    }
}

int main(){
    while(cin>>N>>M)solve();
}