寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #ITP2_5_B : Sorting Tuples

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Sorting Tuples"
https://onlinejudge.u-aizu.ac.jp/problems/ITP2_5_B
n個の品物が与えられます。各品物は{価値、重さ、型、日時、名前}の属性を持ち、これらはそれぞれ整数、整数、英大文字、整数、英小文字の文字列で表されます。 与えられた品物を以下の優先順で出力してください。
1. 価値が低い品物を先に出力する
2. 価値が同じ場合は、重さが小さい品物を先に出力する
3. 重さが同じ場合は、型がアルファベット順で小さい品物を先に出力する
4. 型が同じ場合は、日時が早い品物を先に出力する
5. 日時が同じ場合は、名前が辞書順で小さい品物を先に出力する

僕が作成、提出したコードは、以下のとおりです。

Aizu Online Judge in C++ #ITP2_5_B : Sorting Tuples
/*
Aizu Online Judge in C++ #ITP2_5_B : Sorting Tuples
https://onlinejudge.u-aizu.ac.jp/problems/ITP2_5_B
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    long long n;
    cin>>n;
    vector<tuple<long long,long long,string,long long,string> > vwtds;
    for(long long i=0;i<n;i++){
        long long v,w,d;
        string t,s;
        cin>>v>>w>>t>>d>>s;
        vwtds.emplace_back(v,w,t,d,s);
    }
    sort(vwtds.begin(),vwtds.end());
    for(auto& a:vwtds){
        cout<<get<0>(a)<<" "<<get<1>(a)<<" "<<get<2>(a)<<" "<<get<3>(a)<<" "<<get<4>(a)<<endl;
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/