Submission #1202533


Source Code Expand

#[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() }

const MOD: i64 = 1_000_000_007;

// I solved this after I read the editorial.
fn solve() {
    let n = get();
    let a: Vec<i64> = (0 .. n).map(|_| get()).collect();
    let b: Vec<i64> = (0 .. n).map(|_| get()).collect();
    let mut pool = Vec::new();
    for i in 0 .. n {
        pool.push((a[i], 0));
        pool.push((b[i], 1));
    }
    pool.sort();
    let mut prod = 1;

    let mut libra = 0;
    for (_, v) in pool {
        let mut tmp = 1;
        if v == 0 {
            if libra < 0 {
                tmp = -libra;
            }
            libra += 1;
        } else {
            if libra > 0 {
                tmp = libra;
            }
            libra -= 1;
        }
        prod = prod * tmp % MOD;
    }
    println!("{}", prod);
}

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 Info

Submission Time
Task A - 1D Matching
User kobae964
Language Rust (1.15.1)
Score 500
Code Size 1862 Byte
Status AC
Exec Time 106 ms
Memory 18292 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 14
Set Name Test Cases
Sample example0.txt, example1.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, example0.txt, example1.txt
Case Name Status Exec Time Memory
000.txt AC 65 ms 14588 KB
001.txt AC 25 ms 10620 KB
002.txt AC 33 ms 10620 KB
003.txt AC 37 ms 10492 KB
004.txt AC 94 ms 16500 KB
005.txt AC 106 ms 18292 KB
006.txt AC 106 ms 18292 KB
007.txt AC 106 ms 18292 KB
008.txt AC 106 ms 18292 KB
009.txt AC 106 ms 18292 KB
010.txt AC 106 ms 18292 KB
011.txt AC 106 ms 18292 KB
example0.txt AC 3 ms 8572 KB
example1.txt AC 3 ms 8572 KB