0w1

CFR 659 D. Bicycle Race ( Adhoc )

Problem - D - Codeforces
よく考えると前の方向と今の方向としか関わらない。本番中は難しく考えすぎて偶数奇数まで思考が飛んでタイムオーバー。
レーティングが元から低いから落ちてないし逆に上がった。
次は書き出す前に自信を持って、合ってると確信しない限り手を出すのはやめよう。時間が無駄になる。

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 3;
const int MAXABSXY = 1e4 + 4;
typedef pair< int, int > pii;

int n;

int x[ MAXN ], y[ MAXN ];

void solve(){
    int ans = 0;
    for( int i = 1; i <= n; ++i ){
        int ldir, dir;
        if( x[ i - 2 >= 0 ? i - 2 : n ] == x[ i - 1 ] ){
            if( y[ i - 2 >= 0 ? i - 2 : n ] < y[ i - 1 ] ) ldir = 0; // up
            else ldir = 1; // down
        } else{
            if( x[ i - 2 >= 0 ? i - 2 : n ] < x[ i - 1 ] ) ldir = 2;
            else ldir = 3;
        }
        if( x[ i - 1 ] == x[ i ] ){
            if( y[ i - 1 ] < y[ i ] ) dir = 0; // up
            else dir = 1; // down
        } else{
            if( x[ i - 1 ] < x[ i ] ) dir = 2;
            else dir = 3;
        }
        if( ldir == 0 && dir == 3 ) ++ans;
        if( ldir == 1 && dir == 2 ) ++ans;
        if( ldir == 2 && dir == 0 ) ++ans;
        if( ldir == 3 && dir == 1 ) ++ans;
    }
    printf("%d\n", ans);
}

int main(){
    scanf("%d", &n);
    for( int i = 0; i <= n; ++i )
        scanf("%d%d", x + i, y + i);
    solve();
    return 0;
}