C++競プロ学習日記(仮)

( 学習記録であり解説Blogではないです )

SRM 602 Div2 Level-1 250:TypoCoderDiv2

SRM 602 div2 250:TypoCoderDiv2 を解きました。

題意:
TypoCoderには2種類の Rating がある。
Brown ➡︎ 1200以上
Ciel ➡︎ 1200以下
ただし新しい参加者は Rating 500 スタート。
N回分のコンテスト参加後の Rating が与えられるので何回色が変わったかを出力する。

解法:
初期値 500 からの変動もカウントに入る為、初期値 500 を 配列の先頭( rating[ 0 ] ) に加えてから1200以上と以下の変動で場合分けをする。

#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0; i<(n); i++)
struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star;

struct TypoCoderDiv2
{
    vector<int> rating;
    int count( vector<int> rating )
    {
        int cnt{};
        rating.insert( begin( rating ), 500 );
        REP( i, (int)rating.size() - 1 )
        {
            if( rating[ i ] >= 1200 && rating[ i + 1 ] < 1200 ) cnt++;
            if( rating[ i ] < 1200 && rating[ i + 1 ] >= 1200 ) cnt++;
        }
        return cnt;
    }
};