結果
問題 | No.5009 Draw A Convex Polygon |
ユーザー | hotman78 |
提出日時 | 2022-12-02 12:01:58 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 1,919 ms / 2,600 ms |
コード長 | 866 bytes |
コンパイル時間 | 2,213 ms |
実行使用メモリ | 58,532 KB |
スコア | 1,000,000 |
平均クエリ数 | 909092.00 |
最終ジャッジ日時 | 2022-12-02 12:02:05 |
合計ジャッジ時間 | 6,914 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge12 |
純コード判定しない問題か言語 |
(要ログイン)
ソースコード
#include<bits/stdc++.h> using namespace std; using lint=long long; int main(){ int n=1000000; vector<pair<lint,lint>>v; for (int i=1;i<n;++i){ for(int j=1;j<i;++j){ if(gcd(i,j)!=1){ continue; } if(v.size()==n-2)break; v.emplace_back(i-j,j); } } sort(v.begin(),v.end(),[](auto s,auto t){ return s.first*t.second<s.second*t.first; }); vector<pair<lint,lint>>ans; ans.emplace_back(0LL,0LL); for(auto [s,t]:v){ ans.emplace_back(ans.back().first+s,ans.back().second+t); } ans.emplace_back(ans.back().second,0LL); assert(ans.size()==n); cout<<n<<endl; for(auto [s,t]:ans){ assert(0<=s&&s<=2000000000LL); assert(0<=t&&t<=2000000000LL); cout<<t-1000000000LL<<" "<<s-1000000000LL<<endl; } }