結果
| 問題 | No.5020 Averaging | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2024-02-25 14:15:01 | 
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 1,000 ms | 
| コード長 | 1,479 bytes | 
| コンパイル時間 | 2,319 ms | 
| コンパイル使用メモリ | 208,052 KB | 
| 実行使用メモリ | 6,676 KB | 
| スコア | 19,167,042 | 
| 最終ジャッジ日時 | 2024-02-25 14:15:07 | 
| 合計ジャッジ時間 | 4,119 ms | 
| ジャッジサーバーID (参考情報) | judge11 / judge15 | 
| 純コード判定しない問題か言語 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 50 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using llu = long long unsigned;
vector<ll> dx = { 0, 0, -1, 1};
vector<ll> dy = {-1, 1,  0, 0};
#define TARGET 500000000000000000LL 
ll scoreCal(ll a0, ll a1, ll b0, ll b1) {
    ll newA = (a0 + a1) / 2;
    ll newB = (b0 + b1) / 2;
    ll score = max( abs(TARGET-newA), abs(TARGET-newB));
    return score;
}
int main() {
    int N;
    cin >> N;
    vector<ll> A(N), B(N);
    for (int i=0; i<N; ++i) {
        cin >> A[i] >> B[i];
    }
    vector<pair<int, int>> ret;
    for (int i=0; i<50; ++i) {
        int tmp = 0;
        ll minScore = scoreCal(A[0], A[0], B[0], B[0]);
        //cout << "1 - 1 minScore = " << minScore << endl;
        for (int j=1; j<N; ++j) {
            ll score = scoreCal(A[0], A[j], B[0], B[j]);
            //cout << "1 - " << j+1 << " minScore = " << score << endl;
            if (score < minScore) {
                minScore = score;
                tmp = j;
            }
        }
        if (tmp == 0) { break; }
        ret.push_back(make_pair(1, tmp+1));
        //cout << "1 - " << tmp+1 << " execute" << endl; 
        ll newA = (A[0] + A[tmp]) / 2;
        ll newB = (B[0] + B[tmp]) / 2;
        A[0] = A[tmp] = newA;
        B[0] = B[tmp] = newB;
        //for (int i=0; i<N; ++i) { cout << A[i] << " " << B[i] << endl; }
    }
    cout << ret.size() << endl;
    for (auto x : ret) {
        cout << x.first << " " << x.second << endl;
    }
    return 0;
}
            
            
            
        