結果
問題 | No.1265 Balloon Survival |
ユーザー |
![]() |
提出日時 | 2020-10-23 22:47:01 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 205 ms / 2,000 ms |
コード長 | 2,470 bytes |
コンパイル時間 | 18,790 ms |
コンパイル使用メモリ | 378,840 KB |
実行使用メモリ | 13,824 KB |
最終ジャッジ日時 | 2024-07-21 11:48:38 |
合計ジャッジ時間 | 22,980 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 32 |
ソースコード
use std::io::{self, BufRead, Write};use std::str::FromStr;struct Solver<'a> {reader: io::BufReader<io::StdinLock<'a>>,writer: io::BufWriter<io::StdoutLock<'a>>,}impl Solver<'_> {fn read_line(&mut self) -> String {let mut input = String::new();self.reader.read_line(&mut input).unwrap();input}fn read<T: FromStr>(&mut self) -> T {let input = self.read_line();input.trim_end().parse().ok().unwrap()}fn read_pair<T1: FromStr, T2: FromStr>(&mut self) -> (T1, T2) {let input = self.read_line();let mut iter = input.split_whitespace();(iter.next().unwrap().parse().ok().unwrap(),iter.next().unwrap().parse().ok().unwrap(),)}fn read_pair_vec<T1, T2>(&mut self, n: usize) -> (Vec<T1>, Vec<T2>)where T1: FromStr, T2: FromStr{let mut v1 = Vec::with_capacity(n);let mut v2 = Vec::with_capacity(n);for _ in 0..n {let (x1, x2) = self.read_pair();v1.push(x1);v2.push(x2);}(v1, v2)}fn writeln<T: std::fmt::Display>(&mut self, ans: T) {writeln!(self.writer, "{}", ans).unwrap();}fn solve(&mut self) {use std::cmp::Reverse;use std::collections::BinaryHeap;let n = self.read::<usize>();let (x, y) = self.read_pair_vec::<i64, i64>(n);let mut heap = BinaryHeap::new();for i in 0..n {for j in (i + 1)..n {let d = (x[i] - x[j]).pow(2) + (y[i] - y[j]).pow(2);heap.push((Reverse(d), i, j));}}let mut ans = 0;let mut check = vec![false; n];while let Some((_, i, j)) = heap.pop() {if check[i] || check[j] { continue; }if i == 0 {ans += 1;check[j] = true;} else if j == 0 {ans += 1;check[i] = true;} else {check[i] = true;check[j] = true;}}self.writeln(ans);}fn run() {let (stdin, stdout) = (io::stdin(), io::stdout());let reader = io::BufReader::new(stdin.lock());let writer = io::BufWriter::new(stdout.lock());let mut solver = Solver { reader, writer };solver.solve();}}fn main() {Solver::run();}