[伯俊]7568番ブロック


白駿7568ブロック


質問する


質問url:https://www.acmicpc.net/problem/7568

問題を理解する


入力を比較することで、現在の自分のブロックの順序を決定する問題.
スタイルを比較する基準は体重と身長です.体重と身長の2つのうち1つだけ大きいと、大きな塊ではなく、比較できないので、同じ塊で評価します.
c++のpairを練習する良い問題です.

入力と出力



トラブルシューティング方法


最初の入力でいくつかのブロックを比較し、残りの入力はfor文でvector pairで入力します.
次に2つのfor文を用いてvector内で自分の体重と身長の2つとも大きい数を計算する方法でブロックをランキングします.

コード実装(C++)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int main(){
    int num;
    scanf("%d",&num);
    vector<pair<int,int> >v(num);
    int n1,n2;
    for(int i = 0 ; i < num; i++){
        scanf("%d %d",&n1,&n2);
        v[i].first = n1;
        v[i].second = n2;
    }
    for(int i = 0 ; i < num; i++){
        int rank = 1;
        for(int j = 0; j < num; j++){
            if(v[i].first < v[j].first && v[i].second < v[j].second){
                rank++;
            }
        }
        printf("%d ",rank);
    }
    return 0;
}