結果
問題 | No.1537 私の代わりに仕事やっといてください。 |
ユーザー | inksamurai |
提出日時 | 2021-06-06 20:18:40 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,645 bytes |
コンパイル時間 | 1,260 ms |
コンパイル使用メモリ | 121,856 KB |
実行使用メモリ | 28,772 KB |
最終ジャッジ日時 | 2024-11-26 18:21:01 |
合計ジャッジ時間 | 5,053 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 7 ms
10,624 KB |
testcase_01 | AC | 6 ms
10,496 KB |
testcase_02 | RE | - |
testcase_03 | RE | - |
testcase_04 | WA | - |
testcase_05 | RE | - |
testcase_06 | RE | - |
testcase_07 | RE | - |
testcase_08 | RE | - |
testcase_09 | RE | - |
testcase_10 | RE | - |
ソースコード
#include <cmath> #include <deque> #include <algorithm> #include <iterator> #include <list> #include <tuple> #include <map> #include <unordered_map> #include <queue> #include <set> #include <unordered_set> #include <stack> #include <string> #include <vector> #include <fstream> #include <iostream> #include <functional> #include <numeric> #include <iomanip> #include <stdio.h> //eolibraries #define lnf 3999999999999999999 #define inf 999999999 #define PI 3.14159265359 #define endl "\n" #define fi first #define se second #define pb push_back #define eb emplace_back #define ll long long #define all(c) (c).begin(),(c).end() #define sz(c) (ll)(c).size() #define mkp(a,b) make_pair(a,b) #define make_unique(a) sort(all(a)),a.erase(unique(all(a)),a.end()) #define rsz(a,n) a.resize(n) #define pii pair <ll,ll> #define tpii pair <ll,pii> #define rep(i,n) for(ll i = 0 ; i < n ; i++) #define drep(i,n) for(ll i = n-1 ; i >= 0 ; i--) #define crep(i,x,n) for(ll i = x ; i < n ; i++) #define vi vector <ll> #define vec(s) vector<s> #define rsz(a,n) a.resize(n) #define rszv(a,n,v) a.resize(n,v) #define fcin ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); //eodefine const ll max_n = 303002; using namespace std; struct dsuni { private: ll n; vector<ll> par, siz , color; public: dsuni(ll m) { init(m); } void init(ll m) { n=m; par.resize(n,0); siz.resize(n,0); color.resize(n,0); rep(i,n) { par[i] = i; siz[i] = 1; } } ll parent(ll x) { return par[x] == x ? x : parent(par[x]); } void mkuni(ll x , ll y , ll type = 0) { ll a = parent(x) , b = parent(y); if(a == b) return; if(siz[a] > siz[b]) { // rm(b); siz[a] += siz[b]; par[b] = a; return; } // rm(a); siz[b] += siz[a]; par[a] = b; } bool isuni(ll x, ll y) { ll a = parent(x) , b = parent(y); return a == b; } }; ll n; vec(pii) a; vi adj[max_n]; ll usd[max_n]; vi ans; void dfs(ll x) { if(usd[x]) return; usd[x] = 1; ans.pb(x); for(auto y : adj[x]) { if(usd[y])continue; dfs(y); } } int main(){ fcin; cin>>n; rep(i,n) { ll x; cin>>x; a.pb({x,i}); } sort(all(a)); vec(tpii) edges; rep(i,n) { // crep(j,1,2) { for(int j=i-1;j<=i+1;j++){ if(j<0 or j>=n or j==i)continue; edges.pb({a[i].fi*a[i+j].fi,{a[i].se,a[i+j].se}}); } } sort(all(edges)); reverse(all(edges)); dsuni dsu(n); rep(i,sz(edges)) { pii p = edges[i].se; // cout<<edges[i].fi<<"\n"; if(dsu.isuni(p.fi,p.se)) continue; adj[p.fi].pb(p.se); adj[p.se].pb(p.fi); dsu.mkuni(p.fi,p.se); } dfs(0); for(auto x:ans)cout<<x+1<<" "; cout<<1; /* */ return 0; }