Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::io;
- use std::collections::VecDeque;
- fn input() -> u32 {
- let mut _s: String = String::new();
- io::stdin().read_line(&mut _s).expect("read_line");
- return _s.trim().parse().expect("convert");
- }
- fn main() {
- let _n = input() as usize;
- let mut _pn: VecDeque<u32> = VecDeque::new();
- _pn.resize(_n, 0);
- for _i in 0.._n {
- _pn[_i] = input();
- }
- let mut _sorts: Vec<u32> = vec![];
- _sorts.resize(_n, 0);
- for _i in 0.._n {
- _sorts[_i] = _pn[_i];
- }
- _sorts.sort();
- let mut _keep: VecDeque<u32> = VecDeque::new();
- let mut _ans: Vec<(u32, u32)> = Vec::new();
- for _i in 0.._n {
- let mut _find = false;
- let mut _count: u32 = 0;
- if !_keep.is_empty() && _keep[_keep.len() - 1] == _sorts[_i] {
- _find = true;
- _keep.pop_back();
- let _ans_s = _ans.len();
- _ans[_ans_s - 1].1 += 1;
- }
- if !_find {
- while !_pn.is_empty() && _sorts[_i] != _pn[0] {
- _keep.push_back(_pn[0]);
- _pn.pop_front();
- _count += 1;
- }
- if !_pn.is_empty() {
- _pn.pop_front();
- _count += 1;
- let _f = (1, _count);
- let _s = (2, 1);
- _ans.push(_f);
- _ans.push(_s);
- } else {
- if _keep[_keep.len() - 1] != _sorts[_i] {
- print!("0");
- break;
- } else {
- _keep.pop_back();
- let _ans_s = _ans.len();
- _ans[_ans_s - 1].1 += 1;
- }
- }
- }
- }
- for _i in _ans.iter() {
- println!("{} {}", _i.0, _i.1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement