Submission #1680702


Source Code Expand

#![allow(unused_imports, unused_variables, dead_code)]
use std::io::*;
use std::fmt::*;
use std::str::*;
use std::cmp::*;
use std::collections::*;

trait InputValue {
    fn parse(s: &str) -> Self;
}

fn read<T: InputValue>() -> T {
    let mut buf = String::new();
    let _ = stdin().read_line(&mut buf);
    T::parse(&buf.trim())
}

fn readnc<T: InputValue>() -> Vec<T> {
    let mut vec = vec![];
    let line: String = read();
    for token in line.split_whitespace() {
        vec.push(T::parse(token));
    }
    vec
}

fn readn<T: InputValue>(n: usize) -> Vec<T> {
    let mut vec = vec![];
    for _ in 0..n {
        vec.push(read());
    }
    vec
}

macro_rules! parse_single_value {
    ($($t:ty),*) => {
        $(
            impl InputValue for $t {
                fn parse(s: &str) -> $t { s.parse().unwrap() }
            }
        )*
	}
}
parse_single_value!(i32, i64, f32, f64, usize, String);

macro_rules! parse_tuple {
	($($t:ident),*) => {
		impl<$($t),*> InputValue for ($($t),*) where $($t: InputValue),* {
			fn parse(s: &str) -> ($($t),*) {
				let mut tokens = s.split_whitespace();
				let t = ($($t::parse(tokens.next().unwrap())),*);
				t
			}
		}
	}
}
parse_tuple!(A, B);
parse_tuple!(A, B, C);

// ===

const MOD: i64 = 1e9 as i64 + 7;

fn compute(a: &Vec<i64>) -> i64 {
    let n = a.len();
    let mut diff = vec![];
    for i in 1..n {
        diff.push((a[i] - a[i-1]) % MOD);
    }

    let mut sum = 0;
    let dn = n-1;
    for i in 0..dn {
        let l = i+1;
        let r = dn-i;
        sum += diff[i] * (l as i64) % MOD * (r as i64) % MOD;
        sum %= MOD;
    }
    sum
}

fn main() {
    let (n, m): (usize, usize) = read();
    let col: Vec<i64> = readnc();
    let row: Vec<i64> = readnc();
    println!("{}", compute(&col) * compute(&row) % MOD);
}

Submission Info

Submission Time
Task D - ###
User hamadu
Language Rust (1.15.1)
Score 500
Code Size 1893 Byte
Status AC
Exec Time 23 ms
Memory 11512 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 17
Set Name Test Cases
Sample 0_000.txt, 0_001.txt
All 0_000.txt, 0_001.txt, max.txt, min.txt, mod.txt, n2.txt, rndA.txt, rndB.txt, rndC.txt, rndD.txt, rndE.txt, rndF.txt, rndG.txt, rndH.txt, rndI.txt, rndJ.txt, var.txt
Case Name Status Exec Time Memory
0_000.txt AC 2 ms 4352 KB
0_001.txt AC 2 ms 4352 KB
max.txt AC 23 ms 9972 KB
min.txt AC 2 ms 4352 KB
mod.txt AC 12 ms 9464 KB
n2.txt AC 12 ms 9464 KB
rndA.txt AC 23 ms 9660 KB
rndB.txt AC 22 ms 9660 KB
rndC.txt AC 23 ms 9660 KB
rndD.txt AC 22 ms 9660 KB
rndE.txt AC 23 ms 9664 KB
rndF.txt AC 23 ms 9660 KB
rndG.txt AC 23 ms 9660 KB
rndH.txt AC 23 ms 9684 KB
rndI.txt AC 23 ms 9664 KB
rndJ.txt AC 23 ms 9660 KB
var.txt AC 23 ms 11512 KB