【競プロ精進ログ】ABC132-B

zuka

ABCをコツコツ解いていきます。

本記事は,管理人の競技プロ精進日記としてログを取ったものです。モチベーションを爆上げするために,積極的にアウトプットしていく作戦です。これから競技プログラミングを始めようと考えている人や,なんとなく敷居が高いと感じている人の参考になれば嬉しく思います。その他の記事は以下をご覧ください。

目次

本記事の概要

Atcoderで初心者用のコンテストとして開催されているAtcoder Beginner Contest(通称ABC)を解いていくものです。今回はABC132-B「Ordinary number」です。

ポイント

今回はNの数が小さいため貪欲に調べていっても十分間に合います。ですので,問題文通りに左から3つの要素を抽出して調べていきましょう。

おさえるべき内容

 貪欲に調べていくforループ

実装

#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define repi(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
using namespace std;

int N, a, b, c, ans;
// Nは大きくても20なので適当に30用意
int X[30];

int main(){
  cin >> N;
  // とりあえずXに入れる
  rep(i, N){
    cin >> X[i];
  }
  // 左から貪欲に調べていく
  // 繰り返し回数はN-3+1回
  rep(i, N-3+1){
    // 調べる3つの数字を格納する配列
    int Y[3];
    // 格納していく
    rep(j, 3){
      Y[j] = X[i+j];
    }
    // ソートする
    sort(Y, Y+3);
    // 2番目が変わらなければ条件に一致する
    if (Y[1]==X[i+1]) ans++;
  }
  // 出力
  cout << ans << endl;
}
よかったらシェアしてね!

コメント

コメントする

目次
閉じる