結果
| 問題 | 
                            No.519 アイドルユニット
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2017-06-23 17:59:59 | 
| 言語 | Rust  (1.83.0 + proconio)  | 
                    
| 結果 | 
                             
                                TLE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 899 bytes | 
| コンパイル時間 | 10,576 ms | 
| コンパイル使用メモリ | 400,932 KB | 
| 実行使用メモリ | 46,296 KB | 
| 最終ジャッジ日時 | 2024-10-03 10:02:53 | 
| 合計ジャッジ時間 | 15,335 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | TLE * 1 -- * 33 | 
ソースコード
use std::{cmp, io, u32};
fn main() {
    let mut s = String::new();
    io::stdin().read_line(&mut s).expect("read error");
    let n: u32 = s.trim().parse().expect("parse error");
    let mut v = vec![0; 2usize.pow(n)];
    for i in 0..n {
        s.clear();
        io::stdin().read_line(&mut s).expect("read error");
        for (j, x) in s.trim().split_whitespace().enumerate() {
            v[2usize.pow(i as u32) | 2usize.pow(j as u32)] = cmp::max(x.parse().expect("parse error"), 0);
        }
    }
    let mut m: u32 = 2;
    while m <= n {
        for i in 1..v.len() {
            for j in i+1..v.len() {
                let idx = i | j;
                if i.count_ones() + j.count_ones() == m && idx.count_ones() == m {
                    v[idx] = cmp::max(v[idx], v[i] + v[j]);
                }
            }
        }
        m += 2;
    }
    println!("{}", v.last().unwrap());
}