結果
| 問題 |
No.5009 Draw A Convex Polygon
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 1 |
ソースコード
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))));
}
}