結果

問題 No.3068 Speedrun (Hard)
ユーザー zeronosu77108
提出日時 2025-03-22 09:21:57
言語 Rust
(1.83.0 + proconio)
結果
WA  
実行時間 -
コード長 1,428 bytes
コンパイル時間 13,241 ms
コンパイル使用メモリ 398,236 KB
実行使用メモリ 7,328 KB
最終ジャッジ日時 2025-03-22 09:22:42
合計ジャッジ時間 43,673 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 15 WA * 9 TLE * 8
権限があれば一括ダウンロードができます

ソースコード

diff #

use proconio::input;

// A+B+C+D = N
// P*A+Q*B+R*C+S*D = T

// C+D = N-A-B
// R*C+S*D = T-P*A-Q*B

// R*(N-A-B-D) + S*D = T-P*A-Q*B
// D(S-R) = T-P*A-Q*B - R*N + R*A + R*B

// R*C + S*(N-A-B-C) = T-P*A-Q*B
// C(R-S) = T-P*A-Q*B - S*N + S*A + S*B

fn main() {
    input! {
        a: i64,
        b: i64,
        c: i64,
        d: i64,
        n: i64,
        p: i64,
        q: i64,
        r: i64,
        s: i64,
        t: i64
    }
    
    let mut ans = (0,0,0,0);
    if r==s {
        for a in 0..=a { for b in 0..=b {
            if a+b>n { continue }
            let ci = n - a - b;
            if ci<=c && p*a+q*b+r*ci == t {
                ans = (a,b,ci,0);
            }
        }}
    } else {
        for a in 0..=a { for b in 0..=b {
            if a + b > n { continue }
            // D(S-R) = T-P*A-Q*B - R*N + R*A + R*B
            // C(R-S) = T-P*A-Q*B - S*N + S*A + S*B
            let di = (t - p*a - q*b - r*n + r*a + r*b) / (s-r);
            let ci = (t - p*a - q*b - s*n + s*a + s*b) / (r-s);
            let mut ok = true;
            ok &= (t - p*a - q*b - r*n + r*a + r*b) % (s-r) == 0;
            ok &= (t - p*a - q*b - s*n + s*a + s*b) % (r-s) == 0;
            if ok && (0..=d).contains(&di) && (0..=c).contains(&ci) && a+b+ci+di == n && p*a+q*b+r*ci+s*di == t {
                ans = (a,b,ci,di);
            }
        }}
    }
    
    println!("{} {} {} {}", ans.0, ans.1, ans.2, ans.3);
}
0