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; }