// écrit la liste d'entiers I void ecrire(vint I) { printf("vint : %d valeur(s)\n", I.size()); for (unsigned int i=0; i < I.size(); i++) printf(" %d", I[i]); printf("\n"); }
static void copy(vint v, vint& u){ if(!u.init()) return; while(v.capacity > u.capacity) u.aumenta(); u.sz = v.size(); for(int i = 0; i < v.size(); i++){ *u[i] = *v[i]; } }
void outit() { int i , j , k; ff(i,tolans) pb(xu,i); sort2(xu); ff(i,xu.size()) cout << xu[i] << ' ' << d[xu[i]].size() << endl; cout << endl; ff(i,tolans) { sort1(ans[xu[i]]); ff(j,ans[xu[i]].size()) cout << ans[xu[i]][j] << ' '; cout << endl; }
void ParameterSlider::setValues(const vint& values, const QStringList& labels) { Q_ASSERT(values.size() == labels.size()); m_values = values; m_labels = labels; setEnabled(m_values.size() > 1); if (!m_values.empty()) { m_ui->slider->setRange(0, m_values.size() - 1); setSliderPosition(0); } }
void sortit(vint arr){ int n= arr.size(); for(int i= 0; in-1; i++){ for(int j= i; jn-1; j++){ if(arr[j] arr[j+1]){ swap(arr[j], arr[j+1]); } } } for(int i= 0; in; i++){ cout arr[i] ; } }
int main(){ CPPinput; int n; cin>>n; if(n==1)exit((cout<<"YES\n1\n",0)); if(n==2)exit((cout<<"NO"<<endl,0)); int root=0; for(int i=1;i<=n;++i){ int pa; cin>>pa; if(pa)G[pa].pb(i),G[i].pb(pa); else root=i; } for(int i=1;i<=n;++i)deg[i]=G[i].size(); dfs(root,root); /* auto cmp=[&](const int &a,const int &b){return dep[a]<dep[b];}; priority_queue<int,vint,decltype(cmp)> pq(cmp); for(int i=1;i<=n;++i){ if(son[i].size()==0)pq.push(i); } PDE(pq); inq[0]=1; while(pq.size()){ int now=pq.top(); pq.pop(); PDE(pq,now,del[now],deg[now]); if(del[now])continue; if(deg[now]&1){ int pa=p[now]; if(inq[pa])continue; pq.push(pa); inq[pa]=1; continue; } // ans.pb(now); // del[now]=1; int pa=p[now]; --deg[pa]; son[pa].erase(now); if(son[pa].empty()){ if(inq[pa]); else{ pq.push(pa); inq[pa]=1; } } go(now); } */ PDE(ans); if(ans.size()!=n)exit((cout<<"NO"<<endl,0)); cout<<"YES"<<endl; for(int i:ans)cout<<i<<'\n'; }
int main(){ int n;cin>>n; for(int i=0;i<n;++i){ int t;cin>>t; if(t&1)o.pb(t); else e.pb(t); } sort(o.begin(),o.end()); reverse(o.begin(),o.end()); // sort(e.begin(),e.end()); reverse(e.begin(),e.end()); int mx=o[0],now=o[0]; for(int i=1;i+1<o.size();i+=2){ now+=o[i]+o[i+1]; mx=max(mx,now); } for(int i:e)if(i>0)mx+=i; cout<<mx<<endl; }
void show(const vint & v, int cols) { using std::cout; using std::endl; int lim = v.size(); for(int i = 0; i < lim; ++i) { cout.width(3); cout << v[i]; if(i % cols == cols - 1) cout << endl; else cout << ' '; } if(lim % cols != 0) cout << endl; }
long long hash(vint x) { long long s = 0; for (int i = 0; i < x.size(); i++) s = (s * 2333333 + (x[i]+1)) % 23333333333333333LL; return s; }