Submission #37447427
Source Code Expand
// -*- coding:utf-8-unix -*-
// rustup doc --std --toolchain 1.42.0
#![allow(unused_imports)]
#![allow(unused_macros)]
use bitset_fixed::BitSet;
use itertools::*;
use num::integer::*;
use petgraph::algo::*;
use petgraph::graph::{DiGraph, Graph, NodeIndex, UnGraph};
use petgraph::unionfind::UnionFind;
use petgraph::visit::{
Bfs, Dfs, EdgeRef, IntoEdges, NodeCount, NodeIndexable, VisitMap, Visitable,
};
//use proconio::{input, marker::{Bytes, Chars, Isize1, Usize1}, source::{auto::AutoSource, line::LineSource, once::OnceSource}};
use rand::{
distributions::WeightedIndex,
prelude::{thread_rng, Distribution},
seq::SliceRandom,
Rng,
};
use regex::Regex;
use std::collections::*;
use std::io::{stderr, stdin, stdout, BufRead, BufReader, BufWriter, Read, Write};
use superslice::Ext;
/// input macros based on tanakh's input macro / proconio-rs.
/// tanakh's input macro: <https://qiita.com/tanakh/items/0ba42c7ca36cd29d0ac8>
/// proconio-rs: <https://docs.rs/proconio/0.3.8/proconio/>
/// this macro recieve `Iterator<Item = u8>` input source, except for Bytes/Chars/String read
/// ProconIBufIter receive `std::io::BufRead` trait. (`std::io::StdinLock`, `std::io::BufReader`, `&[u8]`, etc.)
#[allow(unused)]
macro_rules! finput_inner {
($iter:expr) => {};
($iter:expr, ) => {};
($iter:expr, mut $var:ident : $t:tt $($r:tt)*) => {
let mut $var = fread_value!($iter, $t);
finput_inner!{$iter $($r)*}
};
($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
let $var = fread_value!($iter, $t);
finput_inner!{$iter $($r)*}
};
}
#[allow(unused)]
macro_rules! fread_value {
($iter:expr, ( $($t:tt),* )) => { ( $(fread_value!($iter, $t)),* ) };
($iter:expr, [ $t:tt ; $len:expr ]) => { (0..$len).map(|_| fread_value!($iter, $t)).collect::<Vec<_>>() };
($iter:expr, u128) => { $iter.parse_uint::<u128>() };
($iter:expr, usize) => { $iter.parse_uint::<usize>() };
($iter:expr, usize1) => { $iter.parse_uint::<usize>() - 1 };
($iter:expr, u64) => { $iter.parse_uint::<u64>() };
($iter:expr, u64_1) => { $iter.parse_uint::<u64>() - 1 };
($iter:expr, u32) => { $iter.parse_uint::<u32>() };
($iter:expr, u32_1) => { $iter.parse_uint::<u32>() - 1 };
($iter:expr, u16) => { $iter.parse_uint::<u16>() };
($iter:expr, u8) => { $iter.parse_uint::<u8>() };
($iter:expr, i128) => { $iter.parse_iint::<i128>() };
($iter:expr, isize) => { $iter.parse_iint::<isize>() };
($iter:expr, i64) => { $iter.parse_iint::<i64>() };
($iter:expr, i32) => { $iter.parse_iint::<i32>() };
($iter:expr, i16) => { $iter.parse_iint::<i16>() };
($iter:expr, i8) => { $iter.parse_iint::<i16>() as i8 };
($iter:expr, byte) => { $iter.get_ascii_byte().unwrap() };
($iter:expr, Bytes) => {{ let mut v = vec![];$iter.get_ascii_bytes(&mut v);v }};
($iter:expr, Chars) => {{ let mut v = vec![];$iter.get_ascii_chars(&mut v);v }};
($iter:expr, String) => {{ let mut v = vec![];$iter.get_ascii_bytes(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, LineBytes) => {{ let mut v = vec![];$iter.get_ascii_line_bytes(&mut v).and(Some(v)).unwrap() }};
($iter:expr, LineBytesTrim) => {{ let mut v = vec![];$iter.get_ascii_line_bytes_trim(&mut v);v }};
($iter:expr, LineString) => {{ let mut v = vec![];$iter.get_ascii_line_bytes(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, LineStringTrim) => {{ let mut v = vec![];$iter.get_ascii_line_bytes_trim(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, Utf8Bytes) => {{ let mut v = vec![];$iter.get_utf8_bytes(&mut v);v }};
($iter:expr, Utf8String) => {{ let mut v = vec![];$iter.get_utf8_bytes(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, Utf8LineBytes) => {{ let mut v = vec![];$iter.get_utf8_line_bytes(&mut v);v }};
($iter:expr, Utf8LineBytesTrim) => {{ let mut v = vec![];$iter.get_utf8_line_bytes_trim(&mut v);v }};
($iter:expr, Utf8LineString) => {{ let mut v = vec![];$iter.get_utf8_line_bytes(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, Utf8LineStringTrim) => {{ let mut v = vec![];$iter.get_utf8_line_bytes_trim(&mut v);unsafe { std::string::String::from_utf8_unchecked(v) }}};
($iter:expr, $t:ty) => {{ let mut v = vec![];unsafe { std::string::String::from_utf8_unchecked($iter.get_utf8_bytes(&mut v).and(Some(v)).unwrap()) }.parse::<$t>().expect("Parse error") }};
}
fn solve() {
let stdin = std::io::stdin();
let mut source = ProconIBufIter::new(stdin.lock());
macro_rules! finput { ($($r:tt)*) => { finput_inner!{source, $($r)*} }; }
//use std::io::Write;
//let out = std::io::stdout();
//let mut out = std::io::BufWriter::new(out.lock());
//let err = std::io::stderr();
//let mut err = std::io::BufWriter::new(err.lock());
finput! {
n: usize, m: u32,
mut a: [u32; n],
}
a.sort_unstable();
let mut cum_sum = 0u64;
let mut cum_sum_vec = Vec::with_capacity(n + 1);
unsafe {
let cum_sum_ptr = cum_sum_vec.as_mut_ptr();
let mut cum_sum_cur = cum_sum_ptr;
*cum_sum_cur = 0;
cum_sum_cur = cum_sum_cur.add(1);
for &ae in &a {
cum_sum += ae as u64;
*cum_sum_cur = cum_sum;
cum_sum_cur = cum_sum_cur.add(1);
}
cum_sum_vec.set_len(
((cum_sum_cur as usize) - (cum_sum_ptr as usize)) / std::mem::size_of::<usize>(),
)
};
let mut seq_begin = Vec::with_capacity(n + 1);
unsafe {
let seq_begin_ptr = seq_begin.as_mut_ptr();
let mut seq_begin_cur = seq_begin_ptr;
*seq_begin_cur = 0;
seq_begin_cur = seq_begin_cur.add(1);
let mut prev_a = a[0];
for (i, &cur_a) in a.iter().enumerate() {
if prev_a + 1 < cur_a {
*seq_begin_cur = i;
seq_begin_cur = seq_begin_cur.add(1);
}
prev_a = cur_a;
}
seq_begin.set_len(
((seq_begin_cur as usize) - (seq_begin_ptr as usize)) / std::mem::size_of::<usize>(),
);
}
let mut remain_min = cum_sum;
let mut cum_sum_prev = 0;
for &seq_cur in &seq_begin {
let cum_sum_cur = cum_sum_vec[seq_cur];
remain_min.chmin(cum_sum - cum_sum_cur + cum_sum_prev);
cum_sum_prev = cum_sum_cur;
}
if seq_begin.len() == 1 {
remain_min.chmin(0);
} else if a[0] == 0 && a[n - 1] == m - 1 {
remain_min.chmin(cum_sum_vec[seq_begin[seq_begin.len() - 1]] - cum_sum_vec[seq_begin[1]]);
} else {
remain_min.chmin(cum_sum_vec[seq_begin[seq_begin.len() - 1]]);
}
println!("{}", remain_min);
//writeln!(&mut out, "{}", count).unwrap();
//writeln!(&mut err, "{}", count).unwrap();
//out.flush().unwrap();
//err.flush().unwrap();
}
fn main() {
// In order to avoid potential stack overflow, spawn a new thread.
let stack_size = 134_217_728; // 128 MB
let thd = std::thread::Builder::new().stack_size(stack_size);
thd.spawn(|| solve()).unwrap().join().unwrap();
}
/// chmax, chmin sugar syntax
trait Change {
fn chmax(&mut self, x: Self);
fn chmin(&mut self, x: Self);
}
impl<T: PartialOrd> Change for T {
fn chmax(&mut self, x: T) {
if *self < x {
*self = x;
}
}
fn chmin(&mut self, x: T) {
if *self > x {
*self = x;
}
}
}
/// Interaction with `std::io::BufRead` Trait, Implementation of `Iterator<Item = u8>`
pub struct ProconIBufIter<R: std::io::BufRead> {
inner: R,
raw: *const u8,
len: usize,
ptr: *const u8,
end: *const u8,
}
unsafe fn ptr_offset_u8(dist: *const u8, origin: *const u8) -> usize {
// Rust 1.47.0 or later, `dist.offset_from(origin) as usize`
// <https://doc.rust-lang.org/std/primitive.pointer.html#method.offset_from>
dist as usize - origin as usize
}
impl<R: std::io::BufRead> ProconIBufIter<R> {
/// consume raw buffer
#[allow(unused)]
fn consume(&mut self, amt: usize) {
let remain = unsafe { ptr_offset_u8(self.end, self.ptr) };
assert!(remain >= amt);
unsafe {
self.ptr = self.ptr.add(amt);
}
}
/// read when buffer is empty
unsafe fn inner_read(&mut self) -> bool {
assert!(self.is_empty());
self.inner.consume(self.len);
let buffer = self.inner.fill_buf().unwrap();
let raw = buffer.as_ptr();
let len = buffer.len();
self.raw = raw;
self.len = len;
self.ptr = raw;
self.end = raw.add(len);
self.len > 0
}
/// check end of buffer
fn is_empty(&self) -> bool {
self.ptr == self.end
}
/// Interaction with `std::io::BufRead` Trait, Implementation of `Iterator<Item = u8>`
#[allow(unused)]
fn new(inner: R) -> Self {
let mut bufiter = Self {
inner,
raw: std::ptr::null(),
len: 0,
ptr: std::ptr::null(),
end: std::ptr::null(),
};
unsafe { bufiter.inner_read() };
bufiter
}
/// next(), but return empty value
#[allow(unused)]
fn next_unread(&mut self) -> Option<()> {
if self.is_empty() && unsafe { !self.inner_read() } {
return None;
}
unsafe {
self.ptr = self.ptr.add(1);
}
return Some(());
}
/// get now pointer & increment pointer
unsafe fn next_unchecked(&mut self) -> u8 {
let p = self.ptr;
self.ptr = p.add(1);
*p
}
/// peek
#[allow(unused)]
fn peek(&mut self) -> Option<&u8> {
if !self.is_empty() || unsafe { self.inner_read() } {
unsafe { Some(&*self.ptr) }
} else {
None
}
}
/// raw buffer
#[allow(unused)]
fn raw_buf(&mut self) -> &[u8] {
if self.is_empty() {
unsafe {
self.inner_read();
}
}
unsafe { std::slice::from_raw_parts(self.ptr, ptr_offset_u8(self.end, self.ptr)) }
}
/// skip unmatch bytes
fn skipuntil_bytes_fn<F: FnMut(u8) -> bool>(&mut self, f: &mut F) -> bool {
loop {
let mut ptr = self.ptr;
while ptr != self.end {
if f(unsafe { *ptr }) {
self.ptr = ptr;
return true;
}
unsafe {
ptr = ptr.add(1);
}
}
self.ptr = ptr;
if unsafe { !self.inner_read() } {
return false;
}
}
}
}
impl<R: std::io::BufRead> Iterator for ProconIBufIter<R> {
type Item = u8;
/// fetch next byte
fn next(&mut self) -> Option<Self::Item> {
if !self.is_empty() || unsafe { self.inner_read() } {
unsafe { Some(self.next_unchecked()) }
} else {
None
}
}
/// remain size hint
fn size_hint(&self) -> (usize, Option<usize>) {
(unsafe { ptr_offset_u8(self.end, self.ptr) }, None)
}
}
impl<R: std::io::BufRead> Drop for ProconIBufIter<R> {
/// Saving the pointer on interruption
fn drop(&mut self) {
self.inner
.consume(unsafe { ptr_offset_u8(self.ptr, self.raw) });
}
}
/// speed frenzy input parser for program compete (fail parse may cause panic)
trait ProconParse {
/// parse unsigned integer
fn parse_uint<
U: Copy
+ std::cmp::Ord
+ std::ops::BitAnd<Output = U>
+ std::ops::Add<Output = U>
+ std::ops::Sub<Output = U>
+ std::ops::Mul<Output = U>
+ std::convert::From<u8>,
>(
&mut self,
) -> U;
/// parse signed integer
fn parse_iint<
I: Copy
+ std::cmp::Ord
+ std::ops::BitAnd<Output = I>
+ std::ops::Add<Output = I>
+ std::ops::Sub<Output = I>
+ std::ops::Mul<Output = I>
+ std::convert::From<u8>
+ std::ops::Neg<Output = I>,
>(
&mut self,
) -> I;
/// get char (printable ascii char)
fn parse_byte(&mut self) -> Option<u8>;
/// get chars (printable ascii word)
fn parse_bytes(&mut self) -> Vec<u8>;
/// get line chars (sp+printable ascii)
fn parse_line_bytes(&mut self) -> Vec<u8>;
/// get line chars (trimed sp+printable ascii)
fn parse_line_bytes_trim(&mut self) -> Vec<u8>;
}
/// speed frenzy input byte reader for program compete
trait ProconBytes {
/// get bytes
fn get_bytes_fn<F: Fn(u8) -> bool>(&mut self, vec: &mut Vec<u8>, f: &mut F);
/// get chars
fn get_ascii_chars_fn<F: Fn(u8) -> bool>(&mut self, vec: &mut Vec<char>, f: &mut F);
/// get byte (printable ascii char)
fn get_ascii_byte(&mut self) -> Option<u8>;
/// get bytes (printable ascii word)
fn get_ascii_bytes(&mut self, vec: &mut Vec<u8>);
/// get chars (printable ascii word)
fn get_ascii_chars(&mut self, vec: &mut Vec<char>);
/// get line bytes (sp+printable ascii)
fn get_ascii_line_bytes(&mut self, vec: &mut Vec<u8>);
/// get line bytes (trimed sp+printable ascii)
fn get_ascii_line_bytes_trim(&mut self, vec: &mut Vec<u8>);
/// get bytes (printable utf8 word)
fn get_utf8_bytes(&mut self, vec: &mut Vec<u8>);
/// get line bytes (sp+printable utf8)
fn get_utf8_line_bytes(&mut self, vec: &mut Vec<u8>);
/// get line bytes (trimed sp+printable utf8)
fn get_utf8_line_bytes_trim(&mut self, vec: &mut Vec<u8>);
}
impl<T: Iterator<Item = u8>> ProconParse for T {
fn parse_uint<
U: Copy
+ std::cmp::Ord
+ std::ops::BitAnd<Output = U>
+ std::ops::Add<Output = U>
+ std::ops::Sub<Output = U>
+ std::ops::Mul<Output = U>
+ std::convert::From<u8>,
>(
&mut self,
) -> U {
loop {
match self.next() {
Some(c @ b'0'..=b'9') => {
let mut x = U::from(c.wrapping_sub(b'0'));
while let Some(c @ b'0'..=b'9') = self.next() {
x = x.mul(U::from(10)).add(U::from(c.wrapping_sub(b'0')));
}
break x;
}
Some(_) => continue,
None => break U::from(0),
}
}
}
fn parse_iint<
I: Copy
+ std::cmp::Ord
+ std::ops::BitAnd<Output = I>
+ std::ops::Add<Output = I>
+ std::ops::Sub<Output = I>
+ std::ops::Mul<Output = I>
+ std::ops::Neg<Output = I>
+ std::convert::From<u8>,
>(
&mut self,
) -> I {
loop {
match self.next() {
Some(c @ b'0'..=b'9') => {
let mut x = I::from(c.wrapping_sub(b'0'));
while let Some(c @ b'0'..=b'9') = self.next() {
x = x.mul(I::from(10)).add(I::from(c.wrapping_sub(b'0')));
}
break x;
}
Some(b'-') => {
let mut x = if let Some(c @ b'0'..=b'9') = self.next() {
I::from(c.wrapping_sub(b'0')).neg()
} else {
break I::from(0);
};
while let Some(c @ b'0'..=b'9') = self.next() {
x = x.mul(I::from(10)).sub(I::from(c.wrapping_sub(b'0')));
}
break x;
}
Some(_) => continue,
None => break I::from(0),
}
}
}
fn parse_byte(&mut self) -> Option<u8> {
loop {
match self.next() {
Some(c @ b'!'..=b'~') => break Some(c),
Some(_) => continue,
None => break None,
}
}
}
fn parse_bytes(&mut self) -> Vec<u8> {
let mut v = vec![];
loop {
match self.next() {
Some(c @ b'!'..=b'~') => {
v.push(c);
while let Some(c @ b'!'..=b'~') = self.next() {
v.push(c);
}
break v;
}
Some(_) => continue,
None => break v,
}
}
}
fn parse_line_bytes(&mut self) -> Vec<u8> {
let mut v = vec![];
loop {
match self.next() {
Some(c @ b' '..=b'~') => {
v.push(c);
while let Some(c @ b' '..=b'~') = self.next() {
v.push(c);
}
break v;
}
Some(_) => continue,
None => break v,
}
}
}
fn parse_line_bytes_trim(&mut self) -> Vec<u8> {
let mut v = vec![];
loop {
match self.next() {
Some(c @ b'!'..=b'~') => {
v.push(c);
while let Some(c @ b' '..=b'~') = self.next() {
v.push(c);
}
while v.last() == Some(&b' ') {
v.pop();
}
break v;
}
Some(_) => continue,
None => break v,
}
}
}
}
impl<R: std::io::BufRead> ProconBytes for ProconIBufIter<R> {
/// get bytes vector
fn get_bytes_fn<F: Fn(u8) -> bool>(&mut self, vec: &mut Vec<u8>, f: &mut F) {
if !self.skipuntil_bytes_fn(f) {
return;
}
let begin_ptr = self.ptr;
let mut ptr = self.ptr;
loop {
unsafe {
ptr = ptr.add(1);
}
if ptr == self.end {
self.ptr = ptr;
vec.extend_from_slice(unsafe {
std::slice::from_raw_parts(begin_ptr, ptr_offset_u8(ptr, begin_ptr))
});
break;
}
if !f(unsafe { *ptr }) {
self.ptr = ptr;
vec.extend_from_slice(unsafe {
std::slice::from_raw_parts(begin_ptr, ptr_offset_u8(ptr, begin_ptr))
});
return;
}
}
if unsafe { !self.inner_read() } {
return;
}
ptr = self.ptr;
loop {
if !f(unsafe { *ptr }) {
self.ptr = ptr;
vec.extend_from_slice(unsafe {
std::slice::from_raw_parts(self.raw, ptr_offset_u8(ptr, self.raw))
});
return;
}
unsafe {
ptr = ptr.add(1);
}
if ptr == self.end {
self.ptr = ptr;
vec.extend_from_slice(unsafe { std::slice::from_raw_parts(self.raw, self.len) });
if unsafe { !self.inner_read() } {
return;
}
ptr = self.ptr;
}
}
}
fn get_ascii_chars_fn<F: Fn(u8) -> bool>(&mut self, vec: &mut Vec<char>, f: &mut F) {
if !self.skipuntil_bytes_fn(f) {
return;
}
let begin_ptr = self.ptr;
let mut ptr = self.ptr;
loop {
unsafe {
ptr = ptr.add(1);
}
if ptr == self.end {
self.ptr = ptr;
let len = unsafe { ptr_offset_u8(ptr, begin_ptr) };
vec.reserve(len);
let mut p = begin_ptr;
while p != ptr {
vec.push(unsafe { *p } as char);
p = unsafe { p.add(1) };
}
break;
}
if !f(unsafe { *ptr }) {
self.ptr = ptr;
let len = unsafe { ptr_offset_u8(ptr, begin_ptr) };
vec.reserve(len);
let mut p = begin_ptr;
while p != ptr {
vec.push(unsafe { *p } as char);
p = unsafe { p.add(1) };
}
return;
}
}
if unsafe { !self.inner_read() } {
return;
}
ptr = self.ptr;
loop {
if !f(unsafe { *ptr }) {
self.ptr = ptr;
let len = unsafe { ptr_offset_u8(ptr, self.raw) };
vec.reserve(len);
let mut p = self.raw;
while p != ptr {
vec.push(unsafe { *p } as char);
p = unsafe { p.add(1) };
}
return;
}
unsafe {
ptr = ptr.add(1);
}
if ptr == self.end {
self.ptr = ptr;
let len = unsafe { ptr_offset_u8(ptr, self.raw) };
vec.reserve(len);
let mut p = self.raw;
while p != ptr {
vec.push(unsafe { *p } as char);
p = unsafe { p.add(1) };
}
if unsafe { !self.inner_read() } {
return;
}
ptr = self.ptr;
}
}
}
fn get_ascii_byte(&mut self) -> Option<u8> {
loop {
match self.next() {
Some(c @ b'!'..=b'~') => break Some(c),
Some(_) => continue,
None => break None,
}
}
}
fn get_ascii_bytes(&mut self, vec: &mut Vec<u8>) {
self.get_bytes_fn(vec, &mut |c| (b'!'..=b'~').contains(&c))
}
fn get_ascii_chars(&mut self, vec: &mut Vec<char>) {
self.get_ascii_chars_fn(vec, &mut |c| (b'!'..=b'~').contains(&c))
}
fn get_ascii_line_bytes(&mut self, vec: &mut Vec<u8>) {
self.get_bytes_fn(vec, &mut |c| (b' '..=b'~').contains(&c))
}
fn get_ascii_line_bytes_trim(&mut self, vec: &mut Vec<u8>) {
self.skipuntil_bytes_fn(&mut |c| (b'!'..=b'~').contains(&c));
self.get_bytes_fn(vec, &mut |c| (b' '..=b'~').contains(&c));
while vec.last() == Some(&b' ') {
vec.pop();
}
}
fn get_utf8_bytes(&mut self, vec: &mut Vec<u8>) {
self.get_bytes_fn(vec, &mut |c| (b'!'..=0xf4).contains(&c))
}
fn get_utf8_line_bytes(&mut self, vec: &mut Vec<u8>) {
self.get_bytes_fn(vec, &mut |c| (b' '..=0xf4).contains(&c))
}
fn get_utf8_line_bytes_trim(&mut self, vec: &mut Vec<u8>) {
self.skipuntil_bytes_fn(&mut |c| (b'!'..=0xf4).contains(&c));
self.get_bytes_fn(vec, &mut |c| (b' '..=0xf4).contains(&c));
while vec.last() == Some(&b' ') {
vec.pop();
}
}
}
Submission Info
Submission Time |
|
Task |
D - Takahashi's Solitaire |
User |
mizarjp |
Language |
Rust (1.42.0) |
Score |
400 |
Code Size |
22945 Byte |
Status |
AC |
Exec Time |
23 ms |
Memory |
4716 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
example0.txt, example1.txt, example2.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, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, example0.txt, example1.txt, example2.txt |
Case Name |
Status |
Exec Time |
Memory |
000.txt |
AC |
7 ms |
2140 KiB |
001.txt |
AC |
6 ms |
3324 KiB |
002.txt |
AC |
8 ms |
3364 KiB |
003.txt |
AC |
16 ms |
3428 KiB |
004.txt |
AC |
17 ms |
3308 KiB |
005.txt |
AC |
18 ms |
3328 KiB |
006.txt |
AC |
16 ms |
3308 KiB |
007.txt |
AC |
8 ms |
3364 KiB |
008.txt |
AC |
7 ms |
3448 KiB |
009.txt |
AC |
6 ms |
3340 KiB |
010.txt |
AC |
2 ms |
2084 KiB |
011.txt |
AC |
14 ms |
2784 KiB |
012.txt |
AC |
20 ms |
4448 KiB |
013.txt |
AC |
17 ms |
4668 KiB |
014.txt |
AC |
17 ms |
4616 KiB |
015.txt |
AC |
17 ms |
4668 KiB |
016.txt |
AC |
18 ms |
4676 KiB |
017.txt |
AC |
23 ms |
4716 KiB |
018.txt |
AC |
17 ms |
4672 KiB |
019.txt |
AC |
9 ms |
3304 KiB |
020.txt |
AC |
9 ms |
3340 KiB |
021.txt |
AC |
13 ms |
3356 KiB |
022.txt |
AC |
13 ms |
3324 KiB |
023.txt |
AC |
20 ms |
3372 KiB |
024.txt |
AC |
21 ms |
3408 KiB |
025.txt |
AC |
22 ms |
3312 KiB |
026.txt |
AC |
18 ms |
3344 KiB |
027.txt |
AC |
16 ms |
3340 KiB |
028.txt |
AC |
21 ms |
3452 KiB |
029.txt |
AC |
17 ms |
3372 KiB |
030.txt |
AC |
19 ms |
3348 KiB |
031.txt |
AC |
18 ms |
3396 KiB |
032.txt |
AC |
19 ms |
3376 KiB |
033.txt |
AC |
22 ms |
3312 KiB |
034.txt |
AC |
23 ms |
3332 KiB |
035.txt |
AC |
17 ms |
3284 KiB |
036.txt |
AC |
17 ms |
3312 KiB |
example0.txt |
AC |
1 ms |
1992 KiB |
example1.txt |
AC |
1 ms |
2160 KiB |
example2.txt |
AC |
1 ms |
2052 KiB |