結果
| 問題 | No.5020 Averaging | 
| コンテスト | |
| ユーザー |  akidai | 
| 提出日時 | 2024-02-25 13:23:22 | 
| 言語 | Rust (1.83.0 + proconio) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 1,000 ms | 
| コード長 | 1,703 bytes | 
| コンパイル時間 | 1,585 ms | 
| コンパイル使用メモリ | 184,316 KB | 
| 実行使用メモリ | 6,676 KB | 
| スコア | 15,796,941 | 
| 最終ジャッジ日時 | 2024-02-25 13:23:25 | 
| 合計ジャッジ時間 | 3,552 ms | 
| ジャッジサーバーID (参考情報) | judge14 / judge11 | 
| 純コード判定しない問題か言語 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 50 | 
コンパイルメッセージ
warning: unused import: `min`
 --> Main.rs:1:21
  |
1 | use std::cmp::{max, min};
  |                     ^^^
  |
  = note: `#[warn(unused_imports)]` on by default
warning: unnecessary parentheses around `if` condition
  --> Main.rs:29:19
   |
29 |                 if(min_diff > new_diff - prev_diff) {
   |                   ^                               ^
   |
   = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
   |
29 -                 if(min_diff > new_diff - prev_diff) {
29 +                 if min_diff > new_diff - prev_diff {
   |
warning: unused variable: `i`
  --> Main.rs:20:9
   |
20 |     for i in 0..50 {
   |         ^ help: if this is intentional, prefix it with an underscore: `_i`
   |
   = note: `#[warn(unused_variables)]` on by default
warning: 3 warnings emitted
            
            ソースコード
use std::cmp::{max, min};
use std::io;
fn main() {
    let mut buffer = String::new();
    io::stdin().read_line(&mut buffer).unwrap();
    let n: usize = buffer.trim().parse().unwrap();
    let mut plan = vec![];
    for _ in 0..n {
        let mut buffer = String::new();
        io::stdin().read_line(&mut buffer).unwrap();
        let mut iter = buffer.trim().split_whitespace();
        let x: i64 = iter.next().unwrap().parse().unwrap();
        let y: i64 = iter.next().unwrap().parse().unwrap();
        plan.push((x, y));
    }
    let target = 10_i64.pow(17) * 5;
    let mut ans = vec![];
    for i in 0..50 {
        let mut min_diff = 0;
        let mut tmp = (n, n);
        for p in 0..n {
            for q in p + 1..n {
                let prev_diff = max((plan[p].0 - target).abs(), (plan[q].0 - target).abs()) + max((plan[p].1 - target).abs(), (plan[q].1 - target).abs());
                let new_0 = (plan[p].0 + plan[q].0) / 2;
                let new_1 = (plan[p].1 + plan[q].1) / 2;
                let new_diff = (new_0 - target).abs() + (new_1 - target).abs();
                if(min_diff > new_diff - prev_diff) {
                    min_diff = new_diff - prev_diff;
                    tmp = (p, q);
                }
            }
        }
        if min_diff == 0 {
            break;
        }
        plan[tmp.0].0 = (plan[tmp.0].0 + plan[tmp.1].0) / 2;
        plan[tmp.1].0 = (plan[tmp.0].0 + plan[tmp.1].0) / 2;
        plan[tmp.0].1 = (plan[tmp.0].1 + plan[tmp.1].1) / 2;
        plan[tmp.1].1 = (plan[tmp.0].1 + plan[tmp.1].1) / 2;
        ans.push(tmp);
    }
    println!("{}", ans.len());
    for a in ans {
        println!("{} {}", a.0 + 1, a.1 + 1);
    }
}
            
            
            
        