結果
| 問題 | No.5009 Draw A Convex Polygon |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-12-11 20:50:46 |
| 言語 | cLay (20241019-1) |
| 結果 |
AC
|
| 実行時間 | 820 ms / 2,600 ms |
| コード長 | 950 bytes |
| コンパイル時間 | 2,109 ms |
| 実行使用メモリ | 82,596 KB |
| スコア | 10 |
| 平均クエリ数 | 11.00 |
| 最終ジャッジ日時 | 2022-12-11 20:50:51 |
| 合計ジャッジ時間 | 4,825 ms |
|
ジャッジサーバーID (参考情報) |
judge13 / judge12 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 |
ソースコード
void check(const deque<pair<ll,ll>>& dq) {
ll vy1 = dq[0].first-dq[1].first;
ll vx1 = dq[0].second-dq[1].second;
ll vy2 = dq[1].first-dq[2].first;
ll vx2 = dq[1].second-dq[2].second;
if (vy1*vx2 < vy2*vx1) {
cout << vx1 << " " << vy1 << " " << vx2 << " " << vy2 << endl;
abort();
}
}
{
set<pair<int, int>> li;
REP(i, 1500) {
const int vy = i + 1;
REP(j, 1500) {
const int vx = j + 1;
int g = gcd(vy, vx);
li.emplace(vy/g, vx/g);
}
}
int n = 10;
wt(n);
n -= 2;
ll y = 0, x = 0;
// ll oy = 0, ox = 0;
ll oy = 500000000, ox = 500000000;
wt(0-oy, 0-ox);
auto it = li.begin();
deque<pair<ll,ll>> q;
q.emplace_back(0, 0);
REP(_, n) {
assert(it != li.end());
y += it->first;
x += it->second;
wt(y-oy, x-ox);
++it;
q.emplace_back(y, x);
if (q.size() == 3) check(q);
if (q.size() > 4) q.pop_front();
}
wt(0-oy, x-ox);
cout.flush();
}