aoj0505:Questionnaire
問題文
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0505
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0505
解法
構造体に旅行候補の番号と、そこに行きたい人数を詰め込んだ。そして比較関数を作って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(); }