Submission #1818833
Source Code Expand
#[cfg(feature = "local")] pub mod tests; use std::io::*; use std::str::FromStr; use std::fmt::Debug; pub fn main() { let i = stdin(); solve(&mut i.lock(), &mut stdout()); } pub fn solve(i: &mut BufRead, o: &mut Write) { let (n, m) = read_usizes(i); let mut buf = Vec::new(); let mut g = make_graph(n, &mut buf); for _ in 0..m { let (x, y) = read_usizes(i); let (x, y) = (x - 1, y - 1); g[x][y - x - 1] = true; } // 派閥に所属する人物がmembersであるときに、[begin,end)から最大何人派閥に人物を追加できるかを返す fn get_addable(members: List<usize>, g: &[&mut [bool]], begin: usize, end: usize) -> usize { (begin..end) .map(|y| { if members.iter().cloned().all(|x| g[x][y - x - 1]) { get_addable(members.cons(y), g, y + 1, end) + 1 } else { 0 } }) .max() .unwrap_or(0) } let r = get_addable(List::new(), g.as_slice(), 0, n); writeln!(o, "{}", r).unwrap(); } fn make_graph<'a>(nodes: usize, buf: &'a mut Vec<bool>) -> Vec<&'a mut [bool]> { buf.resize(nodes * (nodes - 1) / 2, false); let mut g = Vec::with_capacity(nodes); let mut s = buf.as_mut_slice(); for n in 0..nodes { let s_old = s; let (mut head, mut tail) = s_old.split_at_mut(nodes - n - 1); s = tail; g.push(head); } assert!(s.len() == 0); g } enum List<'a, T: 'a> { None, Cons { head: T, tail: &'a List<'a, T> }, } impl<'a, T: 'a> List<'a, T> { fn new() -> List<'static, T> { List::None } fn cons<'b>(&'b self, value: T) -> List<'b, T> { List::Cons { head: value, tail: self, } } fn iter(&self) -> &Self { self } } impl<'a, T: 'a> Iterator for &'a List<'a, T> { type Item = &'a T; fn next(&mut self) -> Option<&'a T> { match *self { &List::None => None, &List::Cons { ref head, tail } => { *self = tail; Some(head) } } } } fn read_usizes(i: &mut BufRead) -> (usize, usize) { let line = read_line(i); let mut s = line.trim().split(' '); let r0 = read(&mut s); let r1 = read(&mut s); (r0, r1) } fn read_line(i: &mut BufRead) -> String { let mut line = String::new(); i.read_line(&mut line).unwrap(); line } fn read<'a, 'b, I, T>(i: &'a mut I) -> T where I: Iterator<Item = &'b str>, T: FromStr, <T as FromStr>::Err: Debug, { i.next().unwrap().parse().unwrap() }
Submission Info
Submission Time | |
---|---|
Task | D - 派閥 |
User | frozenlib |
Language | Rust (1.15.1) |
Score | 100 |
Code Size | 2779 Byte |
Status | AC |
Exec Time | 2 ms |
Memory | 4352 KB |
Compile Error
warning: variable does not need to be mutable, #[warn(unused_mut)] on by default --> ./Main.rs:46:14 | 46 | let (mut head, mut tail) = s_old.split_at_mut(nodes - n - 1); | ^^^^^^^^
Judge Result
Set Name | all | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
all | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 2 ms | 4352 KB |
00_sample_02.txt | AC | 2 ms | 4352 KB |
00_sample_03.txt | AC | 2 ms | 4352 KB |
00_sample_04.txt | AC | 2 ms | 4352 KB |
test_01.txt | AC | 2 ms | 4352 KB |
test_02.txt | AC | 2 ms | 4352 KB |
test_03.txt | AC | 2 ms | 4352 KB |
test_04.txt | AC | 2 ms | 4352 KB |
test_05.txt | AC | 2 ms | 4352 KB |
test_06.txt | AC | 2 ms | 4352 KB |
test_07.txt | AC | 2 ms | 4352 KB |
test_08.txt | AC | 2 ms | 4352 KB |
test_09.txt | AC | 2 ms | 4352 KB |
test_10.txt | AC | 2 ms | 4352 KB |
test_11.txt | AC | 2 ms | 4352 KB |
test_12.txt | AC | 2 ms | 4352 KB |
test_13.txt | AC | 2 ms | 4352 KB |
test_14.txt | AC | 2 ms | 4352 KB |
test_15.txt | AC | 2 ms | 4352 KB |
test_16.txt | AC | 2 ms | 4352 KB |
test_17.txt | AC | 2 ms | 4352 KB |
test_18.txt | AC | 2 ms | 4352 KB |
test_19.txt | AC | 2 ms | 4352 KB |
test_20.txt | AC | 2 ms | 4352 KB |
test_21.txt | AC | 2 ms | 4352 KB |
test_22.txt | AC | 2 ms | 4352 KB |
test_23.txt | AC | 2 ms | 4352 KB |
test_24.txt | AC | 2 ms | 4352 KB |
test_25.txt | AC | 2 ms | 4352 KB |
test_26.txt | AC | 2 ms | 4352 KB |
test_27.txt | AC | 2 ms | 4352 KB |
test_28.txt | AC | 2 ms | 4352 KB |
test_29.txt | AC | 2 ms | 4352 KB |
test_30.txt | AC | 2 ms | 4352 KB |
test_31.txt | AC | 2 ms | 4352 KB |
test_32.txt | AC | 2 ms | 4352 KB |
test_33.txt | AC | 2 ms | 4352 KB |
test_34.txt | AC | 2 ms | 4352 KB |
test_35.txt | AC | 2 ms | 4352 KB |
test_36.txt | AC | 2 ms | 4352 KB |
test_37.txt | AC | 2 ms | 4352 KB |
test_38.txt | AC | 2 ms | 4352 KB |
test_39.txt | AC | 2 ms | 4352 KB |
test_40.txt | AC | 2 ms | 4352 KB |
test_41.txt | AC | 2 ms | 4352 KB |
test_42.txt | AC | 2 ms | 4352 KB |
test_43.txt | AC | 2 ms | 4352 KB |
test_44.txt | AC | 2 ms | 4352 KB |
test_45.txt | AC | 2 ms | 4352 KB |
test_46.txt | AC | 2 ms | 4352 KB |
test_47.txt | AC | 2 ms | 4352 KB |
test_48.txt | AC | 2 ms | 4352 KB |
test_49.txt | AC | 2 ms | 4352 KB |
test_50.txt | AC | 2 ms | 4352 KB |
test_51.txt | AC | 2 ms | 4352 KB |
test_52.txt | AC | 2 ms | 4352 KB |
test_53.txt | AC | 2 ms | 4352 KB |
test_54.txt | AC | 2 ms | 4352 KB |
test_55.txt | AC | 2 ms | 4352 KB |
test_56.txt | AC | 2 ms | 4352 KB |
test_57.txt | AC | 2 ms | 4352 KB |
test_58.txt | AC | 2 ms | 4352 KB |
test_59.txt | AC | 2 ms | 4352 KB |
test_60.txt | AC | 2 ms | 4352 KB |
test_61.txt | AC | 2 ms | 4352 KB |
test_62.txt | AC | 2 ms | 4352 KB |
test_63.txt | AC | 2 ms | 4352 KB |
test_64.txt | AC | 2 ms | 4352 KB |
test_65.txt | AC | 2 ms | 4352 KB |
test_66.txt | AC | 2 ms | 4352 KB |
test_67.txt | AC | 2 ms | 4352 KB |
test_68.txt | AC | 2 ms | 4352 KB |
test_69.txt | AC | 2 ms | 4352 KB |
test_70.txt | AC | 2 ms | 4352 KB |