結果

問題 No.5009 Draw A Convex Polygon
ユーザー ra5anchorra5anchor
提出日時 2024-07-20 11:18:37
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 1,088 bytes
コンパイル時間 1,230 ms
コンパイル使用メモリ 97,832 KB
実行使用メモリ 114,368 KB
スコア 0
最終ジャッジ日時 2024-07-20 11:18:46
合計ジャッジ時間 7,966 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

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

ソースコード

diff #

#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
#include <tuple>

using namespace std;

int main() {
    const int N = 1000000;
    set<tuple<double, int, int>> st;
    bool ok = false;
    
    for (int i = 1; i < 1300; ++i) {
        for (int j = 1; j < 1300; ++j) {
            int g = __gcd(i, j);
            st.emplace(static_cast<double>(j) / i, i / g, j / g);
            if (st.size() == N) {
                ok = true;
                break;
            }
        }
        if (ok) {
            break;
        }
    }

    vector<tuple<double, int, int>> L(st.begin(), st.end());
    sort(L.begin(), L.end());

    vector<pair<long long, long long>> ans;
    long long nowx = -1000000000 + 1;
    long long nowy = -1000000000 + 1;

    for (int i = 0; i < N; ++i) {
        int x = get<1>(L[i]);
        int y = get<2>(L[i]);
        nowx += x;
        nowy += y;
        ans.emplace_back(nowx, nowy);
    }

    cout << N << '\n';
    for (int i = 0; i < N; ++i) {
        cout << ans[i].first << " " << ans[i].second << '\n';
    }

    return 0;
}
0