[TIOJ] 1012Rails

題目連結:http://tioj.ck.tp.edu.tw/problems/1012
  關於stack的經典問題,不過因為vector比stack快所以就使用了vector,寫到一半忘了為甚麼會有no的case,去翻以前的code才發現我智障QQ,好好模擬就OK了,以前的我用的方法好麻煩,現在這個雖然感覺也很麻煩,不過相比之下清爽多了XD

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int n,m;
vector<int> sta,rep;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    int cnt = 0;
    for(int i = 0; i < n; i++)
    {
        int a;
        cin >> a;
        while(!rep.empty()) sta.push_back(rep.back()),rep.pop_back();
        if(sta.empty() || a > sta.back()) 
        {
            for(int j = cnt+1; j <= a; j++) sta.push_back(j);
            cnt = a;
        }
        if(sta.back() == a) sta.pop_back();
        else
        {
            for(int j = 0; j < m && sta.back() != a; j++) 
                rep.push_back(sta.back()), sta.pop_back();
            if(sta.back() == a) sta.pop_back();
            else {cout << "no" << endl;return 0;}
        }
    }
    cout << "yes" << endl;
}

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題