void try_to_add_or_delete(cl_term* Sp, cl_term* S) { string Sp_str = Sp->conv2str(); string S_str = S->conv2str(); Sp_nchecker.insert(Sp_str); S_nchecker.insert(S_str); if (Sp_nchecker.count(Sp_str) >= max_SS_n || S_nchecker.count(S_str) >= max_SS_n) { multiset_delete_one(Sp_nchecker, Sp_str); multiset_delete_one(S_nchecker, S_str); delete Sp; delete S; return; } if (uniqchecker.try_to_add(Sp_str, S_str)) { population.push_back(make_cl_ssprimega_member(Sp, S)); } else { multiset_delete_one(Sp_nchecker, Sp_str); multiset_delete_one(S_nchecker, S_str); delete Sp; delete S; return; } }
int main() { int N; scanf("%d", &N); for(int i=0; i<N; ++i) { scanf("%llu", a+i); st.insert(a[i]); } if (N>200) { puts("Yes"); } else { uint64 v[4]; for(int i1=0; i1<N; ++i1) for(int i2=i1+1; i2<N; ++i2) for(int i3=i2+1; i3<N; ++i3) { v[0]=a[i1]; v[1]=a[i2]; v[2]=a[i3]; v[3]=v[0]^v[1]^v[2]; multiset<uint64> st2; for(int x=0; x<4; ++x) { st2.insert(v[x]); } bool good=true; for(int x=0; x<4; ++x) { if (st.count(v[x]) < st2.count(v[x])) good=false; } if (good) { puts("Yes"); return 0; } } puts("No"); } }
//devuelve cuantos elementos de 'mi_multiset' tienen un valor de 'valor' int contarElementosMultiset(multiset<int> mi_multiset,int valor) { //Creo una variable donde guardare los valores de multiset, con la funcion "count" de multiset cuento a ver cuantos valores tiene el multiset y retorno la variable para saber cuantos veces se hayaron los valores int conta=1;//por warning los inicialize if(conta != 0) //si el contador es distinto a cero { conta = mi_multiset.count(valor); //contador va a contar los valores que haigan con la funcion count } return conta; //Me guie de aqui: http://www.cplusplus.com/reference/set/multiset/count/ }
int main() { ios::sync_with_stdio(0); #ifndef ONLINE_JUDGE ifstream F("p.in"); #endif F>>n; for (int i=1,v;i<=n;++i) { F>>v; if ( wrap.count(v) ) // if we already have a wrap ( a b a ) , then we can update the solution // and clear the containers as two wraps won't overlaps and the wrap we made // is the leftmost { finish(wrap[v],v); continue; } else { if ( ct.count(v) ) { int cnt = ct.count(v) >= 2 ? 1 : 0; // if a have at least 2 v's then we can also wrap one while ( cnt || stk.back() != v ) { if ( stk.back() == v ) cnt--; wrap[stk.back()] = v; // now just wrap stk.pop_back(); } } ct.insert(v); stk.push_back(v); } } G<<ans.size()<<'\n'; for (int i=0;i<int(ans.size());++i) G<<ans[i]<<' '; G<<'\n'; }
int main() { int n; while((cin >> n) && n) { unsigned int from,to; c.clear(); for(int i = 0;i < n;i++) { cin >> from >> to; couple temp(from,to); couple retemp(to,from); if(c.count(retemp) != 0) c.erase(c.find(retemp)); else c.insert(temp); } if(c.size() == 0) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }
//devuelve la suma de los elementos de 'mi_multiset' que usan 'llave' como llave int sumaElementosMultiset(multiset<int> mi_multiset, int valor) { multiset<int>::iterator it; //Creo un iterador it = mi_multiset.find(valor); //El iterador toma el valor del que le proporciona el find return *it * mi_multiset.count(valor); //El valor que proporciona el find lo multiplica por la cantidad de elementos de multiset }
//devuelve cuantos elementos de 'mi_multiset' tienen un valor de 'valor' int contarElementosMultiset(multiset<int> mi_multiset,int valor) { return mi_multiset.count(valor); //count cuenta los valores del multiset }
double median(char c,long long x){ double retval; if(DEBUG){ for(it = minset.begin();it!=minset.end();it++) cout<<*it<<" "; cout<<":"; for(it = maxset.begin();it!=maxset.end();it++) cout<<*it<<" "; cout<<endl; } if(c == 'r'){ if(minset.empty() && maxset.empty()){ flag++; return -1; } else if(minset.empty()){ if(maxset.count(x) == 0){ flag++; return -1; } else{ // TODO - Done it = maxset.find(x); if(it != maxset.end()) maxset.erase(it); } } else if(maxset.empty()){ if(minset.count(x) == 0){ flag++; return -1; } else{ // TODO - Done it = minset.find(x); if(it != minset.end()) minset.erase(it); } } else if(minset.count(x) == 0 && maxset.count(x) == 0){ flag++; return -1; } else{ // TODO - Done if(minset.count(x) != 0){ it = minset.find(x); if(it != minset.end()) minset.erase(it); } else{ it = maxset.find(x); if(it != maxset.end()) maxset.erase(it); } } adjust(); } else if(c == 'a'){ it = maxset.begin(); if(*it <= x) maxset.insert(x); else minset.insert(x); adjust(); } if(minset.empty()){ flag++; return -1; } else{// TODO if(minset.size() > maxset.size()){ it = minset.end(); it--; retval = *it; } else{ it = minset.end(); it--; retval = *it; it = maxset.begin(); retval = (retval+(*it))/2; } } if(DEBUG){ cout<<"Minset not empty"<<endl; for(it = minset.begin();it!=minset.end();it++) cout<<*it<<" "; cout<<":"; for(it = maxset.begin();it!=maxset.end();it++) cout<<*it<<" "; } return retval; }