ABC001 C - 風力観測


Tags:cpatcoderjust_dodiff_experimentaldiff_green

問題

https://atcoder.jp/contests/abc001/tasks/abc001_3

問題文

風向と風程が与えられるので、気象形式に直してね。

方位角度 (左端含む・右端含まない)
N348.75 - 11.25
NNE11.25 - 33.75
NE33.75 - 56.25
ENE56.25 - 78.75
E78.75 - 101.25
ESE101.25 - 123.75
SE123.75 - 146.25
SSE146.25 - 168.75
S168.75 - 191.25
SSW191.25 - 213.75
SW213.75 - 236.25
WSW236.25 - 258.75
W258.75 - 281.25
WNW281.25 - 303.75
NW303.75 - 326.25
NNW326.25 - 348.75
C風力 0
風力風速 (両端含む)
00.0 - 0.2
10.3 - 1.5
21.6 - 3.3
33.4 - 5.4
45.5 - 7.9
58.0 - 10.7
610.8 - 13.8
713.9 - 17.1
817.2 - 20.7
920.8 - 24.4
1024.5 - 28.4
1128.5 - 32.6
1232.7 -

サンプル

I/O 1

2750 628

風向: 275.0 度; 風程: 628m/min

W 5

I/O 2

161 8
C 0

I/O 3

3263 15
NNW 1

I/O 8 まであるけど略。

考察

場合分けが面倒だけど、やるだけ。
そのまま秒速に直すと誤差が生じかねないので、風力のほうを分速にしておく。

コード

https://atcoder.jp/contests/abc001/submissions/27938477

int main() {
  int deg, dis;
  cin >> deg >> dis;
  if (dis < 15) {
    printf("C 0\n");
    return 0;
  }
  {
    if (deg <= 112)
      printf("N");
    else if (deg <= 337)
      printf("NNE");
    else if (deg <= 562)
      printf("NE");
    else if (deg <= 787)
      printf("ENE");
    else if (deg <= 1012)
      printf("E");
    else if (deg <= 1237)
      printf("ESE");
    else if (deg <= 1462)
      printf("SE");
    else if (deg <= 1687)
      printf("SSE");
    else if (deg <= 1912)
      printf("S");
    else if (deg <= 2137)
      printf("SSW");
    else if (deg <= 2362)
      printf("SW");
    else if (deg <= 2587)
      printf("WSW");
    else if (deg <= 2812)
      printf("W");
    else if (deg <= 3037)
      printf("WNW");
    else if (deg <= 3262)
      printf("NW");
    else if (deg <= 3487)
      printf("NNW");
    else
      printf("N");
  }
  printf(" ");
  {
    if (dis < 93)
      printf("1");
    else if (dis < 201)
      printf("2");
    else if (dis < 327)
      printf("3");
    else if (dis < 477)
      printf("4");
    else if (dis < 645)
      printf("5");
    else if (dis < 831)
      printf("6");
    else if (dis < 1029)
      printf("7");
    else if (dis < 1245)
      printf("8");
    else if (dis < 1467)
      printf("9");
    else if (dis < 1707)
      printf("10");
    else if (dis < 1959)
      printf("11");
    else
      printf("12");
  }
  printf("\n");
  return 0;
}