2013年9月5日

UVa 271 - Simply Syntax

#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;

int main() {
  char s[999];
  while (gets(s)) {
    stack<char> exp;
    bool ok = true;
    for (int i = strlen(s) - 1; ok && i >= 0; i--) {
      if (s[i] >= 'p' && s[i] <= 'z') {
        exp.push(s[i]);
      } else if (s[i] == 'N') {
        if (!exp.size()) {
          ok = false;
        }
      } else if (s[i] == 'C' || s[i] == 'D' || s[i] == 'E' || s[i] == 'I') {
        if (exp.size() >= 2) {
          exp.pop();
        } else {
          ok = false;
        }
      }
    }
    puts((exp.size() == 1 && ok) ? "YES" : "NO");
  }
  return 0;
}

沒有留言:

張貼留言