1. 程式人生 > >Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) (棧)

Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) (棧)

題目連結:http://codeforces.com/contest/1092/problem/D1

題意:是有n個列,然後輸入n個數ai表示每個列當前的磚的個數,然後有任意塊2*1和1*2的磚,問最後能不能鋪滿n*max(ai)

思路:如果相鄰的兩堆差值為2的倍數則可以成對消去,用棧模擬這個過程,最後判斷如果剩餘堆的數量大於一,輸出NO,反之輸出YES。

#include<bits/stdc++.h>
using namespace std;
#define read(x) scanf("%d",&x)
int main()
{
    int n, h; read(n);
    stack<int> stk; read(h);
    stk.push(h);
    for(int i = 2; i <= n; i++)
    {
        read(h);
        if(stk.size() && (h - stk.top()) % 2 == 0)
            stk.pop();
        else stk.push(h);
    }
    if(stk.size() <= 1) printf("YES\n");
    else printf("NO\n");
}