🏇

ABC203 write up

2021/06/01に公開

ABC203のバチャに参加したので解法とかを書きます

A - Chinchirorin

問題文にあるようにif文を設計する. もう少し簡潔に書ける方法もあると思うけど思いつかなかった...

a.rs
#![allow(unused_imports)]
#![allow(non_snake_case)]
use cmp::{max, min, Reverse};
use proconio::{fastout, input, marker::*};
use std::collections::*;
use std::*;

fn main() {
    input! {
    a:usize,
    b:usize,
    c:usize
    }
    println!(
        "{}",
        if a == b {
            c
        } else if b == c {
            a
        } else if a == c {
            b
        } else {
            0
        }
    );
}

B - AtCoder Condominium

format!()を使ってi0jの形の数字を作って加算する.Rustはformat!()が便利なので良い...

b.rs
#![allow(unused_imports)]
#![allow(non_snake_case)]
use cmp::{max, min, Reverse};
use proconio::{fastout, input, marker::*};
use std::collections::*;
use std::*;

fn main() {
	input! {
    n:usize,
    k:usize
	}
  let mut ans = 0;
  for i in 1..=n {
      for j in 1..=k {
          let x:usize = format!("{}0{}",i,j).parse().unwrap();
          ans += x;
      }
  }
  println!("{}",ans);
}

C - Friends and Travel costs

村の情報をsortして,今のコストで友人の居る村に行けるようなら行く.行けなければ所持金で行ける所まで行くようにすればOK.

c.rs
#![allow(unused_imports)]
#![allow(non_snake_case)]
use cmp::{max, min, Reverse};
use proconio::{fastout, input, marker::*};
use std::collections::*;
use std::*;

fn main() {
    input! {
    n:usize,
    k:u64,
    mut ab:[(u64,u64);n]
    }
    let mut nk = k;
    let mut nx = 0;
    let mut ans = 0;
    ab.sort();
    for (a, b) in ab {
        if nk >= (a-nx) {
            nk -= (a-nx);
            nx = a;
            nk += b;
        }else{
            break;
        }
    }
    ans = nx + nk;
    println!("{}", ans);
}

今までdbg!()は消さずに提出してたが,今回それが原因でTLEしてしまった.出力は重いので面倒くさがらずに消す癖をつけたいと思う.

Discussion