結果

問題 No.5009 Draw A Convex Polygon
ユーザー kakel-sankakel-san
提出日時 2022-12-03 23:20:41
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 2,776 bytes
コンパイル時間 918 ms
実行使用メモリ 85,100 KB
スコア 0
平均クエリ数 357750.00
最終ジャッジ日時 2022-12-03 23:20:45
合計ジャッジ時間 3,949 ms
ジャッジサーバーID
(参考情報)
judge16 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

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

ソースコード

diff #

using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static int[] NList => ReadLine().TrimStart().Split().Select(int.Parse).ToArray();
    static int[] NMi => ReadLine().Split().Select(c => int.Parse(c) - 1).ToArray();
    static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NMi).ToArray();
    public static void Main()
    {
        Solve();
    }
    static void Solve()
    {
        var d = new List<int[]>();
        d.Add(new int[] { 999955281, -999916840 });
        for (var i = 0; i < 44719; ++i)
        {
            var last = d[d.Count - 1];
            d.Add(new int[] { last[0] + 1, last[1] + d.Count });
        }
        var cnt = d.Count;
        for (var i = cnt - 2; i > 0; --i) d.Add(new int[] { d[i][0], -d[i][1]});
        for (var i = 1; i < cnt; ++i) d.Add(new int[] { -d[i][1], d[i][0] });
        for (var i = cnt - 2; i > 0; --i) d.Add(new int[] { d[i][1], d[i][0] });
        for (var i = 1; i < cnt; ++i) d.Add(new int[] { -d[i][0], -d[i][1] });
        for (var i = cnt - 2; i > 0; --i) d.Add(new int[] { -d[i][0], d[i][1] });
        for (var i = 1; i < cnt; ++i) d.Add(new int[] { d[i][1], -d[i][0] });
        for (var i = cnt - 2; i > 0; --i) d.Add(new int[] { -d[i][1], -d[i][0] });
        WriteLine(d.Count);
        // var prev = 0.0;
        // for (var i = 0; i < d.Count; ++i)
        // {
        //     if (i + 1 < d.Count)
        //     {
        //         var cur = Math.Atan2(d[i + 1][1] - d[i][1], d[i + 1][0] - d[i][0]);
        //         if (cur < prev) cur += Math.PI * 2;
        //         if (cur == prev || cur - prev > 1)
        //         {
        //             WriteLine("!!! at" + i);
        //             WriteLine(string.Join(" ", d[i - 1]) + " " + prev);
        //             WriteLine(string.Join(" ", d[i]) + " " + cur);
        //             WriteLine(string.Join(" ", d[i + 1]));
        //             return;
        //         }
        //         prev = cur;
        //     }
        //     else
        //     {
        //         var cur = Math.Atan2(d[0][1] - d[i][1], d[0][0] - d[i][0]);
        //         if (cur < prev) cur += Math.PI * 2;
        //         if (cur == prev || cur - prev > 1)
        //         {
        //             WriteLine("!!! at" + i);
        //             WriteLine(string.Join(" ", d[i - 1]));
        //             WriteLine(string.Join(" ", d[i]));
        //             WriteLine(string.Join(" ", d[i + 1]));
        //             return;
        //         }
        //         prev = cur;
        //     }
        // }
        WriteLine(string.Join("\n", d.Select(di => string.Join(" ", di))));
    }
}
0