Submission #8536500


Source Code Expand

#[doc = " https://github.com/hatoo/competitive-rust-snippets"]
#[allow(unused_imports)]
use std::cmp::{max, min, Ordering};
#[allow(unused_imports)]
use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, VecDeque};
#[allow(unused_imports)]
use std::io::{stdin, stdout, BufWriter, Write};
#[allow(unused_imports)]
use std::iter::FromIterator;
#[macro_export]
macro_rules ! chmax { ( $ x : expr , $ ( $ v : expr ) ,+ ) => { $ ( $ x = std :: cmp :: max ( $ x ,$ v ) ; ) + } ; }
#[macro_export]
macro_rules ! chmin { ( $ x : expr , $ ( $ v : expr ) ,+ ) => { $ ( $ x = std :: cmp :: min ( $ x ,$ v ) ; ) + } ; }
#[macro_export]
macro_rules ! max { ( $ x : expr ) => ( $ x ) ; ( $ x : expr , $ ( $ xs : expr ) ,+ ) => { std :: cmp :: max ( $ x , max ! ( $ ( $ xs ) ,+ ) ) } ; }
#[macro_export]
macro_rules ! min { ( $ x : expr ) => ( $ x ) ; ( $ x : expr , $ ( $ xs : expr ) ,+ ) => { std :: cmp :: min ( $ x , min ! ( $ ( $ xs ) ,+ ) ) } ; }
#[macro_export]
macro_rules ! dvec { ( $ t : expr ; $ len : expr ) => { vec ! [ $ t ; $ len ] } ; ( $ t : expr ; $ len : expr , $ ( $ rest : expr ) ,* ) => { vec ! [ dvec ! ( $ t ; $ ( $ rest ) ,* ) ; $ len ] } ; }
#[allow(unused_macros)]
macro_rules ! debug { ( $ ( $ a : expr ) ,* ) => { eprintln ! ( concat ! ( $ ( stringify ! ( $ a ) , " = {:?}, " ) ,* ) , $ ( $ a ) ,* ) ; } }
#[macro_export]
macro_rules ! input { ( source = $ s : expr , $ ( $ r : tt ) * ) => { let mut parser = Parser :: from_str ( $ s ) ; input_inner ! { parser , $ ( $ r ) * } } ; ( parser = $ parser : ident , $ ( $ r : tt ) * ) => { input_inner ! { $ parser , $ ( $ r ) * } } ; ( new_stdin_parser = $ parser : ident , $ ( $ r : tt ) * ) => { let stdin = std :: io :: stdin ( ) ; let reader = std :: io :: BufReader :: new ( stdin . lock ( ) ) ; let mut $ parser = Parser :: new ( reader ) ; input_inner ! { $ parser , $ ( $ r ) * } } ; ( $ ( $ r : tt ) * ) => { input ! { new_stdin_parser = parser , $ ( $ r ) * } } ; }
#[macro_export]
macro_rules ! input_inner { ( $ parser : ident ) => { } ; ( $ parser : ident , ) => { } ; ( $ parser : ident , $ var : ident : $ t : tt $ ( $ r : tt ) * ) => { let $ var = read_value ! ( $ parser , $ t ) ; input_inner ! { $ parser $ ( $ r ) * } } ; }
#[macro_export]
macro_rules ! read_value { ( $ parser : ident , ( $ ( $ t : tt ) ,* ) ) => { ( $ ( read_value ! ( $ parser , $ t ) ) ,* ) } ; ( $ parser : ident , [ $ t : tt ; $ len : expr ] ) => { ( 0 ..$ len ) . map ( | _ | read_value ! ( $ parser , $ t ) ) . collect ::< Vec < _ >> ( ) } ; ( $ parser : ident , chars ) => { read_value ! ( $ parser , String ) . chars ( ) . collect ::< Vec < char >> ( ) } ; ( $ parser : ident , usize1 ) => { read_value ! ( $ parser , usize ) - 1 } ; ( $ parser : ident , $ t : ty ) => { $ parser . next ::<$ t > ( ) . expect ( "Parse error" ) } ; }
use std::io;
use std::io::BufRead;
use std::str;
pub struct Parser<R> {
    reader: R,
    buf: Vec<u8>,
    pos: usize,
}
impl Parser<io::Empty> {
    pub fn from_str(s: &str) -> Parser<io::Empty> {
        Parser {
            reader: io::empty(),
            buf: s.as_bytes().to_vec(),
            pos: 0,
        }
    }
}
impl<R: BufRead> Parser<R> {
    pub fn new(reader: R) -> Parser<R> {
        Parser {
            reader: reader,
            buf: vec![],
            pos: 0,
        }
    }
    pub fn update_buf(&mut self) {
        self.buf.clear();
        self.pos = 0;
        loop {
            let (len, complete) = {
                let buf2 = self.reader.fill_buf().unwrap();
                self.buf.extend_from_slice(buf2);
                let len = buf2.len();
                if len == 0 {
                    break;
                }
                (len, buf2[len - 1] <= 0x20)
            };
            self.reader.consume(len);
            if complete {
                break;
            }
        }
    }
    pub fn next<T: str::FromStr>(&mut self) -> Result<T, T::Err> {
        loop {
            let mut begin = self.pos;
            while begin < self.buf.len() && (self.buf[begin] <= 0x20) {
                begin += 1;
            }
            let mut end = begin;
            while end < self.buf.len() && (self.buf[end] > 0x20) {
                end += 1;
            }
            if begin != self.buf.len() {
                self.pos = end;
                return str::from_utf8(&self.buf[begin..end]).unwrap().parse::<T>();
            } else {
                self.update_buf();
            }
        }
    }
}
#[allow(unused_macros)]
macro_rules ! debug { ( $ ( $ a : expr ) ,* ) => { eprintln ! ( concat ! ( $ ( stringify ! ( $ a ) , " = {:?}, " ) ,* ) , $ ( $ a ) ,* ) ; } }
#[doc = " https://github.com/hatoo/competitive-rust-snippets"]
const BIG_STACK_SIZE: bool = true;
#[allow(dead_code)]
fn main() {
    use std::thread;
    if BIG_STACK_SIZE {
        thread::Builder::new()
            .stack_size(32 * 1024 * 1024)
            .name("solve".into())
            .spawn(solve)
            .unwrap()
            .join()
            .unwrap();
    } else {
        solve();
    }
}
fn solve() {
    input!{
        n:usize,
        xy:[(i64,i64);n]
    }

    let mut z = vec![];
    for i in 0..n {
        let (x,y) = xy[i];
        z.push((x,i));
        z.push((y,i));
    }
    z.sort();

    let mut h = HashSet::new();

    for i in 0..min(z.len(),8) {
        h.insert(z[i].1);
    }
    z.reverse();
    for i in 0..min(z.len(),8) {
        h.insert(z[i].1);
    }

    let mut z: Vec<usize> = h.into_iter().collect();
    z.sort();
    let m = z.len();

    let mut minv = std::i64::MAX;
    for bit in 0..(1<<m) {
        let mut R = vec![];
        let mut B = vec![];
        for j in 0..m {
            let (x,y) = xy[z[j]];
            if (bit & (1<<j)) > 0 {
                R.push(x);
                B.push(y);
            } else {
                R.push(y);
                B.push(x);
            }
        }
        R.sort();
        let rmax = R[m-1];
        let rmin = R[0];
        B.sort();
        let bmax = B[m-1];
        let bmin = B[0];

        let v = (rmax-rmin) * (bmax-bmin);
        chmin!(minv,v);
    }

    println!("{}", minv);
}

Submission Info

Submission Time
Task E - Ball Coloring
User akiradeveloper
Language Rust (1.15.1)
Score 0
Code Size 6293 Byte
Status WA
Exec Time 105 ms
Memory 28400 KB

Compile Error

warning: variable `R` should have a snake case name such as `r`, #[warn(non_snake_case)] on by default
   --> ./Main.rs:140:13
    |
140 |         let mut R = vec![];
    |             ^^^^^

warning: variable `B` should have a snake case name such as `b`, #[warn(non_snake_case)] on by default
   --> ./Main.rs:141:13
    |
141 |         let mut B = vec![];
    |             ^^^^^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 3
AC × 11
WA × 24
Set Name Test Cases
Sample example0, example1, example2
All div20, div21, div22, div23, div24, example0, example1, example2, maxrand0, maxrand1, maxrand2, maxrand20, maxrand21, maxrand210, maxrand211, maxrand22, maxrand23, maxrand24, maxrand25, maxrand26, maxrand27, maxrand28, maxrand29, maxrand3, maxrand4, smallrand0, smallrand1, smallrand2, smallrand3, smallrand4, sparse0, sparse1, sparse2, sparse3, sparse4
Case Name Status Exec Time Memory
div20 WA 105 ms 28400 KB
div21 WA 105 ms 28400 KB
div22 WA 104 ms 23800 KB
div23 WA 104 ms 23800 KB
div24 WA 105 ms 28400 KB
example0 AC 3 ms 8572 KB
example1 AC 3 ms 8572 KB
example2 AC 3 ms 8572 KB
maxrand0 WA 101 ms 23624 KB
maxrand1 WA 104 ms 23800 KB
maxrand2 WA 104 ms 23800 KB
maxrand20 WA 95 ms 23788 KB
maxrand21 WA 96 ms 23788 KB
maxrand210 AC 90 ms 25156 KB
maxrand211 WA 97 ms 23788 KB
maxrand22 WA 96 ms 23788 KB
maxrand23 WA 100 ms 23624 KB
maxrand24 WA 103 ms 23800 KB
maxrand25 AC 93 ms 23800 KB
maxrand26 AC 94 ms 23800 KB
maxrand27 WA 100 ms 23800 KB
maxrand28 WA 102 ms 23800 KB
maxrand29 WA 104 ms 23788 KB
maxrand3 WA 103 ms 23624 KB
maxrand4 WA 104 ms 23800 KB
smallrand0 AC 3 ms 8572 KB
smallrand1 AC 3 ms 8572 KB
smallrand2 AC 3 ms 8572 KB
smallrand3 AC 4 ms 8572 KB
smallrand4 AC 3 ms 8572 KB
sparse0 WA 88 ms 23800 KB
sparse1 WA 88 ms 23800 KB
sparse2 WA 88 ms 23800 KB
sparse3 WA 88 ms 23800 KB
sparse4 WA 88 ms 23788 KB