CODE FESTIVAL 2016 Grand Final

Submission #1202614

Source codeソースコード

#[allow(unused_imports)]
use std::cmp::*;
#[allow(unused_imports)]
use std::collections::*;
use std::io::Read;
#[allow(dead_code)]
fn getline() -> String {
    let mut ret = String::new();
    std::io::stdin().read_line(&mut ret).ok().unwrap();
    ret
}
fn get_word() -> String {
    let mut stdin = std::io::stdin();
    let mut u8b: [u8; 1] = [0];
    loop {
        let mut buf: Vec<u8> = Vec::with_capacity(16);
        loop {
            let res = stdin.read(&mut u8b);
            if res.unwrap_or(0) == 0 || u8b[0] <= b' ' {
                break;
            } else {
                buf.push(u8b[0]);
            }
        }
        if buf.len() >= 1 {
            let ret = String::from_utf8(buf).unwrap();
            return ret;
        }
    }
}

#[allow(dead_code)]
fn get<T: std::str::FromStr>() -> T { get_word().parse().ok().unwrap() }

fn petrs_belief(p: &[f64], q: &[f64], x: f64) -> f64 {
    let mut sum = 0.0;
    for i in 0 .. 6 {
        let t1 = p[i] * x;
        let t2 = q[i] * (1.0 - x);
        sum += if t1 > t2 { t1 } else { t2 };
    }
    sum
}

fn solve() {
    let p: Vec<f64> = (0 .. 6).map(|_| get::<f64>() / 100.0).collect();
    let q: Vec<f64> = (0 .. 6).map(|_| get::<f64>() / 100.0).collect();
    let mut lo = 0.0;
    let mut hi = 1.0;
    for _ in 0 .. 50 {
        let mid1 = (lo * 2.0 + hi) / 3.0;
        let mid2 = (lo + 2.0 * hi) / 3.0;
        let f1 = petrs_belief(&p, &q, mid1);
        let f2 = petrs_belief(&p, &q, mid2);
        if f1 < f2 {
            hi = mid2;
        } else {
            lo = mid1;
        }
    }
    println!("{}", petrs_belief(&p, &q, lo));
}

fn main() {
    // In order to avoid potential stack overflow, spawn a new thread.
    let stack_size = 104_857_600; // 100 MB
    let thd = std::thread::Builder::new().stack_size(stack_size);
    thd.spawn(|| solve()).unwrap().join().unwrap();
}

Submission

Task問題 D - Dice Game
User nameユーザ名 koba@チーム戦の時は別垢を作れ!
Created time投稿日時
Language言語 Rust (1.15.1)
Status状態 AC
Score得点 1000
Source lengthソースコード長 1874 Byte
File nameファイル名
Exec time実行時間 3 ms
Memory usageメモリ使用量 8572 KB

Test case

Set

Set name Score得点 / Max score Cases
Sample - example0.txt,example1.txt
All 1000 / 1000 000.txt,001.txt,002.txt,003.txt,004.txt,005.txt,006.txt,007.txt,008.txt,009.txt,010.txt,011.txt,012.txt,013.txt,014.txt,015.txt,016.txt,017.txt,018.txt,019.txt,020.txt,021.txt,022.txt,023.txt,024.txt,025.txt,026.txt,027.txt,028.txt,029.txt,030.txt,031.txt,032.txt,033.txt,034.txt,035.txt,036.txt,037.txt,038.txt,example0.txt,example1.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
000.txt AC 3 ms 8572 KB
001.txt AC 3 ms 8572 KB
002.txt AC 3 ms 8572 KB
003.txt AC 3 ms 8572 KB
004.txt AC 3 ms 8572 KB
005.txt AC 3 ms 8572 KB
006.txt AC 3 ms 8572 KB
007.txt AC 3 ms 8572 KB
008.txt AC 3 ms 8572 KB
009.txt AC 3 ms 8572 KB
010.txt AC 3 ms 8572 KB
011.txt AC 3 ms 8572 KB
012.txt AC 3 ms 8572 KB
013.txt AC 3 ms 8572 KB
014.txt AC 3 ms 8572 KB
015.txt AC 3 ms 8572 KB
016.txt AC 3 ms 8572 KB
017.txt AC 3 ms 8572 KB
018.txt AC 3 ms 8572 KB
019.txt AC 3 ms 8572 KB
020.txt AC 3 ms 8572 KB
021.txt AC 3 ms 8572 KB
022.txt AC 3 ms 8572 KB
023.txt AC 3 ms 8572 KB
024.txt AC 3 ms 8572 KB
025.txt AC 3 ms 8572 KB
026.txt AC 3 ms 8572 KB
027.txt AC 3 ms 8572 KB
028.txt AC 3 ms 8572 KB
029.txt AC 3 ms 8572 KB
030.txt AC 3 ms 8572 KB
031.txt AC 3 ms 8572 KB
032.txt AC 3 ms 8572 KB
033.txt AC 3 ms 8572 KB
034.txt AC 3 ms 8572 KB
035.txt AC 3 ms 8572 KB
036.txt AC 3 ms 8572 KB
037.txt AC 3 ms 8572 KB
038.txt AC 3 ms 8572 KB
example0.txt AC 3 ms 8572 KB
example1.txt AC 3 ms 8572 KB