結果
| 問題 | 
                            No.2008 Super Worker
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2024-09-03 10:23:52 | 
| 言語 | Rust  (1.83.0 + proconio)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 51 ms / 2,000 ms | 
| コード長 | 513 bytes | 
| コンパイル時間 | 17,044 ms | 
| コンパイル使用メモリ | 399,944 KB | 
| 実行使用メモリ | 12,208 KB | 
| 最終ジャッジ日時 | 2024-09-03 10:24:44 | 
| 合計ジャッジ時間 | 16,283 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 33 | 
ソースコード
use proconio::input;
fn main() {
    input! {
        n:usize,
        a:[usize;n],
        b:[usize;n],
    }
    let mut c = (0..n)
        .map(|i| ((b[i] - 1) as f64 / a[i] as f64, i))
        .collect::<Vec<_>>();
    c.sort_by(|x, y| y.0.partial_cmp(&x.0).unwrap());
    let mut ans = 0;
    let mut level = 1;
    for &(_, id) in c.iter() {
        ans += level * a[id];
        ans %= MOD;
        level *= b[id];
        level %= MOD;
    }
    println!("{}", ans);
}
const MOD: usize = 1000000007;