結果

問題 No.3068 Speedrun (Hard)
ユーザー zeronosu77108
提出日時 2025-03-22 09:29:14
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 606 ms / 2,000 ms
コード長 1,720 bytes
コンパイル時間 12,805 ms
コンパイル使用メモリ 395,764 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2025-03-22 09:29:33
合計ジャッジ時間 18,206 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 32
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: value assigned to `ans` is never read
  --> src/main.rs:17:13
   |
17 |     let mut ans = (0, 0, 0, 0);
   |             ^^^
   |
   = help: maybe it is overwritten before being read?
   = note: `#[warn(unused_assignments)]` on by default

warning: variable `A` should have a snake case name
 --> src/main.rs:6:9
  |
6 |         A: usize,
  |         ^ help: convert the identifier to snake case: `a`
  |
  = note: `#[warn(non_snake_case)]` on by default

warning: variable `B` should have a snake case name
 --> src/main.rs:7:9
  |
7 |         B: usize,
  |         ^ help: convert the identifier to snake case: `b`

warning: variable `C` should have a snake case name
 --> src/main.rs:8:9
  |
8 |         C: usize,
  |         ^ help: convert the identifier to snake case (notice the capitalization): `c`

warning: variable `D` should have a snake case name
 --> src/main.rs:9:9
  |
9 |         D: usize,
  |         ^ help: convert the identifier to snake case: `d`

warning: variable `P` should have a snake case name
  --> src/main.rs:11:9
   |
11 |         P: i64,
   |         ^ help: convert the identifier to snake case: `p`

warning: variable `Q` should have a snake case name
  --> src/main.rs:12:9
   |
12 |         Q: i64,
   |         ^ help: convert the identifier to snake case: `q`

warning: variable `R` should have a snake case name
  --> src/main.rs:13:9
   |
13 |         R: i64,
   |         ^ help: convert the identifier to snake case: `r`

warning: variable `S` should have a snake case name
  --> src/main.rs:14:9
   |
14 |         S: i64,
   |         ^ help: convert the identifier to snake case (notice the capitalization): `s`

warning: variable `T` should have a snake case name
  --> src/main.rs:15:9
   |
15 |         T: i64
   |         ^ help: convert the identifier to snake case: `t`

ソースコード

diff #

use proconio::input;
use std::cmp::min;

fn main(){
    input!{
        A: usize,
        B: usize,
        C: usize,
        D: usize,
        n: usize,
        P: i64,
        Q: i64,
        R: i64,
        S: i64,
        T: i64
    }
    let mut ans = (0, 0, 0, 0);
    for a in 0..=A {
        for b in 0..=B {
            if a + b > n { continue; }
            let rem_n = n - a - b;
            let rem_t = T - P * a as i64 - Q * b as i64;
            if R == S {
                if rem_n as i64 * R != rem_t { continue; }
                if C + D < rem_n { continue; }
                let nc = min(C, rem_n);
                ans = (a, b, nc, rem_n - nc);
                println!("{} {} {} {}", ans.0, ans.1, ans.2, ans.3);
                return;
            } else if R < S {
                let diff = S - R;
                let num = rem_n as i64 * S - rem_t;
                if num % diff != 0 { continue; }
                let c = num / diff;
                let d = rem_n as i64 - c;
                if c < 0 || c > C as i64 || d < 0 || d > D as i64 { continue; }
                ans = (a, b, c as usize, d as usize);
                println!("{} {} {} {}", ans.0, ans.1, ans.2, ans.3);
                return;
            } else {
                let diff = R - S;
                let num = rem_t - rem_n as i64 * S;
                if num % diff != 0 { continue; }
                let c = num / diff;
                let d = rem_n as i64 - c;
                if c < 0 || c > C as i64 || d < 0 || d > D as i64 { continue; }
                ans = (a, b, c as usize, d as usize);
                println!("{} {} {} {}", ans.0, ans.1, ans.2, ans.3);
                return;
            }
        }
    }
}
0