Yuulis.log

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

【AtCoder】ABC 375 A - Seats | 茶コーダーが解くAtCoder

atcoder.jp

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

問題概要

 N 個の座席が並んでおり、座席には  1, 2, \cdots, N の番号が付けられている。なお、座席の状態は#, .からなる長さ  N の文字列  S によって与えられ、  S i 文字目が#のとき座席  i には人が座っていることを表し、.のとき座席  i には人が座っていないことを表す。このとき、 1 \leq i \leq N - 2 を満たす整数  i であって、以下の条件を満たすものの個数を求めよ。

  • 条件 : 座席  i, i + 2 には人が座っており、座席  i + 1 には人が座っていない。

制約

  •  N は整数で、  1 \leq N \leq 2 \times 10^5 を満たす。

考察

問題文の通りに実装していくだけ。

 S_i =#かつ  S_{i+1} =.かつ  S_{i+2} =#であれば答えのカウンターを加算すればよい。

コード

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

#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

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

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

    int ans = 0;
    rep(i, 0, N - 2) {
        if (S[i] == '#' && S[i + 1] == '.' && S[i + 2] == '#') {
            ans++;
        }
    }

    cout << ans << endl;
}

atcoder.jp

実装時間: 5分