Return to problem list

2020-1A Problem B

Solution that only works for the small input

small/main.rs:
save   open on GitHub
fn solve(n: i64) -> Vec<(i64, i64)> {
	let mut sum = 0i64;
	let mut i = 1i64;
	while sum + i < n {
		sum += i;
		i += 1;
	}
	let mut diff = n - sum;
	assert!(diff > 0 && diff <= i);
	let mut result = Vec::new();
	for i in 1..i {
		if diff > 0 {
			result.push((i, i));
			diff -= 1;
		}
		result.push((i+1, i));
	}
	if diff > 0 {
		result.push((i, i));
		diff -= 1;
	}
	assert_eq!(diff, 0);
	result
}

fn main() {
	let t: usize = {
		let l = read_ints();
		assert_eq!(l.len(), 1);
		l[0]
	};
	for c in 0..t {
		let n: i64 = {
			let l = read_ints();
			assert_eq!(l.len(), 1);
			l[0]
		};
		println!("Case #{}:", c + 1);
		for (r, k) in solve(n) {
			println!("{} {}", r, k);
		}
	}
}

// boilerplate omitted...