結果

問題 No.5009 Draw A Convex Polygon
ユーザー suisen
提出日時 2022-12-03 23:59:22
言語 C++17(gcc12)
(gcc 12.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,377 bytes
コンパイル時間 813 ms
実行使用メモリ 22,856 KB
スコア 0
平均クエリ数 1000001.00
最終ジャッジ日時 2022-12-03 23:59:27
合計ジャッジ時間 4,438 ms
ジャッジサーバーID
(参考情報)
judge16 / judge15
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <algorithm>
#include <iostream>
#include <vector>
constexpr int sgn_x[4] = { +1, -1, -1, +1 };
constexpr int sgn_y[4] = { +1, +1, -1, -1 };
constexpr std::size_t N = 1000000;
constexpr int M = 641;
int main() {
std::vector<std::pair<long long, long long>> ds;
auto dfs = [&](auto dfs, int ld, int ln, int rd, int rn) -> void {
int md = ld + rd;
int mn = ln + rn;
if (md <= M) {
ds.emplace_back(md, mn);
if (ds.size() == N / 8) return;
dfs(dfs, ld, ln, md, mn);
if (ds.size() == N / 8) return;
dfs(dfs, md, mn, rd, rn);
}
};
dfs(dfs, 1, 0, 1, 1);
std::sort(
ds.begin(),
ds.end(),
[&](const std::pair<long long, long long>& p, const std::pair<long long, long long>& q) {
auto [pd, pn] = p;
auto [qd, qn] = q;
return pn * qd < qn* pd;
}
);
std::cout << 8 * ds.size() << '\n';
long long cx = 0, cy = 0;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 2; ++j) {
for (auto& [x, y] : ds) {
std::cout << cx << ' ' << cy << '\n';
cx += sgn_x[i] * x, cy += sgn_y[i] * y;
std::swap(x, y);
}
std::reverse(ds.begin(), ds.end());
}
}
std::cout.flush();
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0