結果

問題 No.5009 Draw A Convex Polygon
ユーザー chro_96chro_96
提出日時 2022-12-02 00:59:44
言語 C
(gcc 12.3.0)
結果
WA  
実行時間 -
コード長 2,078 bytes
コンパイル時間 130 ms
実行使用メモリ 22,620 KB
スコア 0
平均クエリ数 438141.00
最終ジャッジ日時 2022-12-02 00:59:47
合計ジャッジ時間 1,524 ms
ジャッジサーバーID
(参考情報)
judge11 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>

int main () {
  int n = 0;
  int m = 0;
  
  int max = 0;
  
  int x = 1000000000;
  int y = 0;
  
  for (int i = 1; i < 1000000000/i; i++) {
    long long idx[2] = { 0LL, 1000001LL };
    long long used = ((long long)i)*((long long)(i+2));
    while (idx[1] - idx[0] > 1LL) {
      long long nxt = (idx[0]+idx[1])/2LL;
      if ((nxt*(nxt+3LL))/2LL-5LL <= 1000000000LL-used) {
        idx[0] = nxt;
      } else {
        idx[1] = nxt;
      }
    }
    if (i+((int)idx[0]) > max) {
      n = i;
      m = (int)(idx[0]);
      max = n+m;
    }
  }
  
  
  printf("%d\n", (n+m-2)*8);
  for (int i = m; i > 2; i--) {
    x -= 1;
    y += i;
    printf("%d %d\n", x, y);
  }
  for (int i = 1; i <= n; i++) {
    x -= i;
    y += i+1;
    printf("%d %d\n", x, y);
  }
  for (int i = n; i > 0; i--) {
    x -= i+1;
    y += i;
    printf("%d %d\n", x, y);
  }
  for (int i = 2; i <= m; i++) {
    x -= i;
    y += 1;
    printf("%d %d\n", x, y);
  }
  
  for (int i = m; i > 2; i--) {
    x -= i;
    y -= 1;
    printf("%d %d\n", x, y);
  }
  for (int i = 1; i <= n; i++) {
    x -= i+1;
    y -= i;
    printf("%d %d\n", x, y);
  }
  for (int i = n; i > 0; i--) {
    x -= i;
    y -= i+1;
    printf("%d %d\n", x, y);
  }
  for (int i = 2; i <= m; i++) {
    x -= 1;
    y -= i;
    printf("%d %d\n", x, y);
  }
  
  for (int i = m; i > 2; i--) {
    x += 1;
    y -= i;
    printf("%d %d\n", x, y);
  }
  for (int i = 1; i <= n; i++) {
    x += i;
    y -= i+1;
    printf("%d %d\n", x, y);
  }
  for (int i = n; i > 0; i--) {
    x += i+1;
    y -= i;
    printf("%d %d\n", x, y);
  }
  for (int i = 2; i <= m; i++) {
    x += i;
    y -= 1;
    printf("%d %d\n", x, y);
  }
  
  for (int i = m; i > 2; i--) {
    x += i;
    y += 1;
    printf("%d %d\n", x, y);
  }
  for (int i = 1; i <= n; i++) {
    x += i+1;
    y += i;
    printf("%d %d\n", x, y);
  }
  for (int i = n; i > 0; i--) {
    x += i;
    y += i+1;
    printf("%d %d\n", x, y);
  }
  for (int i = 2; i <= m; i++) {
    x += 1;
    y += i;
    printf("%d %d\n", x, y);
  }
  
  return 0;
}
0