bouzuya.hatenablog.com

ぼうずやのにっき

twiq-light 0.2.0 をつくった / ABC137 の A, B, C, D を解いた

2023-01-01 に twiq-light 0.2.0 をつくった。 bouzuya/rust-sandbox の twiq-light/ にある。

  • twiq-light queue 関連のコマンドを追加した
    • ツイートの予約ができるようになった
  • 認証情報などを毎回渡さなくて済むように設定ファイルを追加
    • ${XDG_CONFIG_HOME}/net.bouzuya.rust-sandbox.twiq-light/config.json
  • ツイートのデータファイルの位置を変更
    • ${HOME}/twiq-light.json${XDG_STATE_HOME}/net.bouzuya.rust-sandbox.twiq-light/tweet.json
  • TWIQ_LIGHT_TWITTER_BEARER_TOKEN 環境変数を削除し、 Firestore 上に保存された OAuth2 の token に統合

思った以上にいろいろ変えている。もっと早くバージョンを区切っても良かったように思う。

設定ファイルなどの配置は crates:xdg を使って XDG Base Directory specification (https://wiki.archlinux.jp/index.php/XDG_Base_Directory) に寄せている。TWIQ_LIGHT_CONFIG_HOMETWIQ_LIGHT_STATE_HOME 環境変数で保存場所は別途指定できる。

他の人が使うことをまったく想定していない。そのうち直すかもしれない。


ABC137 : AtCoder Beginner Contest 137 の A, B, C, D を解いた。

use std::collections::BinaryHeap;

use proconio::input;

fn main() {
    input! {
        n: usize,
        m: usize,
        mut ab: [(usize, usize); n],
    };

    ab.sort_by_key(|&(a, _)| a);

    let mut sum = 0_usize;
    let mut pq = BinaryHeap::new();
    let mut index = 0_usize;
    for d in 1..=m {
        while index < n {
            let (a, b) = ab[index];
            if a <= d {
                pq.push(b);
            } else {
                break;
            }
            index += 1;
        }

        if let Some(x) = pq.pop() {
            sum += x;
        }
    }

    let ans = sum;
    println!("{}", ans);
}

今日のコミット。