結果
問題 | 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 500000000000000000LLll 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;}