Task: | Järjestys |
Sender: | Hennkka |
Submission time: | 2020-11-28 10:13:25 +0200 |
Language: | Rust |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 26 |
#2 | ACCEPTED | 74 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.01 s | 1, 2 | details |
#2 | ACCEPTED | 0.01 s | 2 | details |
#3 | ACCEPTED | 0.01 s | 2 | details |
Code
use std::io::BufRead; const MOD: usize = 1_000_000_007; fn solve(a: Vec<usize>, x: usize) -> usize { let a = { let mut a = a; a.sort(); a }; let mut res = 1; for (i, v) in a.iter().enumerate() { // How many values are at most x smaller let k = (0..i) .rev() .map(|j| a[j]) .take_while(|c| v - c <= x) .count(); res *= k + 1; res %= MOD; } res } fn main() { let stdin = std::io::stdin(); let stdin = stdin.lock(); let mut lines = stdin.lines(); let t: usize = lines.next().unwrap().unwrap().parse().unwrap(); for _ in 0..t { let nx: Vec<usize> = lines .next() .unwrap() .unwrap() .split_whitespace() .map(|v| v.parse().unwrap()) .collect(); let (_n, x) = (nx[0], nx[1]); let input: Vec<usize> = lines .next() .unwrap() .unwrap() .split_whitespace() .map(|v| v.parse().unwrap()) .collect(); println!("{}", solve(input, x)); } } #[cfg(test)] mod tests { use super::*; #[test] fn test_sample() { assert_eq!(solve(vec![1], 5), 1); assert_eq!(solve(vec![1, 2, 3], 1), 4); assert_eq!(solve(vec![2, 100, 95, 999, 1, 77, 6, 8], 42), 144); } }
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
input |
---|
100 5 20 65 49 97 55 9 6 33 42 32 10 92 60 37 ... |
correct output |
---|
6 192 4 72 288 ... |
user output |
---|
6 192 4 72 288 ... Truncated |
Test 2
Group: 2
Verdict: ACCEPTED
input |
---|
100 85 980 570 804 393 119 973 743 345 46... |
correct output |
---|
753889928 541098438 241592657 827522722 403761060 ... |
user output |
---|
753889928 541098438 241592657 827522722 403761060 ... Truncated |
Test 3
Group: 2
Verdict: ACCEPTED
input |
---|
100 100 1 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
correct output |
---|
988185646 196898158 546822979 56844088 346866189 ... |
user output |
---|
988185646 196898158 546822979 56844088 346866189 ... Truncated |