Submission #586050

#TimeUsernameProblemLanguageResultExecution timeMemory
586050jasmin자동 인형 (IOI18_doll)C++14
2 / 100
93 ms12668 KiB
#include<bits/stdc++.h> using namespace std; #include<doll.h> //#define int long long int ind; vector<int> x; vector<int> y; /*void answer(vector<int> c, vector<int> x, vector<int> y){ cout << c.size() << "\n"; for(auto e: c){ cout << e << " "; } cout << "\n"; cout << x.size() << "\n"; for(int i=0; i<(int)x.size(); i++){ cout << x[i] << " " << y[i] << "\n"; } }*/ int create_tree(int h, int maxh, int num, vector<int>& a){ if(h==maxh){ if(num>=(int)a.size()) return -1; return -a[num]; } int child0=create_tree(h+1, maxh, num, a); int child1=create_tree(h+1, maxh, num+(1<<h), a); if(child1==-1) return child0; x.push_back(-child0); y.push_back(-child1); int i=ind; ind++; return i; } int pow2(int x){ int ans=0; int p=1; while(p<x){ ans++; p*=2; } return ans; } void create_circuit(int m, vector<int> a){ vector<vector<int> > adi(m+1, vector<int> (0)); int n=a.size(); a.push_back(0); for(int i=0; i<n; i++){ adi[a[i]].push_back(a[i+1]); } x.clear(); y.clear(); ind=1; vector<int> c(m+1, 0); c[0]=a[0]; for(int i=0; i<=m; i++){ if(adi[i].size()==0) continue; if(adi[i].size()==1){ c[i]=adi[i][0]; continue; } int maxh=pow2(adi[i].size()); c[i]=-create_tree(0, maxh, 0, adi[i]); } answer(c, x, y); } /*signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int m, n; cin >> m >> n; vector<int> a(n); for(int i=0; i<n; i++){ cin >> a[i]; } create_circuit(m, a); }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...