結果
| 問題 |
No.5 数字のブロック
|
| ユーザー |
tubo28
|
| 提出日時 | 2016-04-01 12:15:49 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 5,000 ms |
| コード長 | 1,895 bytes |
| コンパイル時間 | 12,992 ms |
| コンパイル使用メモリ | 390,536 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-18 08:26:56 |
| 合計ジャッジ時間 | 14,468 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 34 |
ソースコード
fn main(){
let mut sc = Scanner::new();
let l = sc.i();
let n = sc.i();
let mut w = vec![];
for _ in 0..n {
w.push(sc.i());
}
w.sort();
let mut ans = 0;
let mut acc = 0;
for e in w {
if acc + e > l {
break;
}
acc += e;
ans += 1
}
println!("{}",ans);
}
#[allow(dead_code)]
struct Scanner {
token_buffer : Vec<String>,
index : usize,
}
#[allow(dead_code)]
impl Scanner {
fn new() -> Scanner{
Scanner { token_buffer: vec![], index: 0 }
}
fn fetch_token(&mut self) -> Result<String,&str> {
if self.index < self.token_buffer.len() {
self.index += 1;
Ok(self.token_buffer[self.index - 1].clone())
} else {
let mut st = String::new();
match std::io::stdin().read_line(&mut st) {
Ok(l) => {
if l == 0 {
Err("End of file")
} else if st == "" {
self.next()
} else {
self.token_buffer = st.split_whitespace().map(|x| x.to_string() ).collect();
self.index = 0;
self.next()
}
},
Err(_) => Err("Falid to read line"),
}
}
}
fn next<T>(& mut self) -> Result<T,&str> where T: std::str::FromStr {
match self.fetch_token() {
Ok(r) => match r.parse::<T>() {
Ok(r) => Ok(r),
Err(_) => Err("Parse error"),
},
Err(e) => Err(e),
}
}
fn i(& mut self) -> i32 {
self.next::<i32>().unwrap()
}
fn f(& mut self) -> f64 {
self.next::<f64>().unwrap()
}
fn s(& mut self) -> String {
self.next::<String>().unwrap()
}
}
tubo28