Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 380 B - Hurdle Parsing | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 27

問題概要

長さ  N の正整数列  A を使って、次のように文字列  S を生成した。

  •  S=|から始める。
  •  i=1,2,\cdots,N の順に、次の操作を行う。
    •  S の末尾に- A_i 個追加する。
    • その後、  S の末尾に|を1個追加する。

ここで、生成された文字列  S が与えられるので、正整数列  A を復元せよ。

制約

  • [tex: 3 \leq |S| \leq 100

考察

 S の生成方法を逆算すればよい。具体的には、

  •  S_1 から順に各文字を見ていく。
  •  S_i =-ならば、  S_i =|となるまでカウンターを増やす。その後カウンターの数字を出力し、  0 に戻す。

コード

#include <bits/stdc++.h>
using namespace std;

// ======================================== //

int main()
{
    string S;
    cin >> S;

    vector<int> A;
    rep(i, 1, S.size())
    {
        int cnt = 0;
        while (S[i] != '|')
        {
            cnt++;
            i++;
        }
        A.push_back(cnt);
    }

    rep(i, 0, A.size())
    {
        cout << A[i] << " ";
    }
    cout << endl;
}

atcoder.jp

実装時間: 5分以内