WARush

SRMの結果とか、解けた問題のコードを書いていきます

Codeforces #189 Div2 A "Magic Numbers"

問題

http://codeforces.com/contest/320/problem/A

マジックナンバーはナンバー1, 14, 144を連結したものである。これらの数値は何回でも使用して連結する事ができる。なので、14144, 141414, 1411はマジックナンバーであるが、1444, 514, 414はそうではない。

あなたにナンバーnが与えられるので、それがマジックナンバーか判定せよ。

制約

1 <= n <= 10^9



考えた事

4がでてきたら、何個前に1が出てきたかチェック。それが3個前であればアウトー


ソースコード

int main() {
    string n;
    cin >> n;
    int p = -100;
    for( int i = 0; i < n.length(); i++ ){
        char c = n[i];
        if( c != '1' && c != '4' ){
            cout << "NO" << endl;
            return 0;
        }

        if( c == '1' ){
            p = i;
        }

        if( c == '4' && i - p > 2 ){
            cout << "NO" << endl;
            return 0;
        }
    }

    cout << "YES" << endl;
}