#define USECHRONO #undef HAVE_MPI #include "eval.hpp" #include #include #include #include #include using namespace aed; using namespace std; //---:---<*>---:---<*>- COMIENZA CODIGO FUNCION --:---<*>---:---<*>---:---<*> // COMPLETAR DNI y NOMBRE AQUI: // Nombre: Brian Ambrosig. int DNI=41403400 //---:---<*>---:---<*>---:---<*>---:---<*>---:---<*> /*Implementar una funcioŽn bool prom_subc(set &S) que dado un conjunto S, determine si existe un subconjunto de S para el cual la suma de sus elementos sea la parte entera del promedio de S.*/ //auxiliar void SubL(set &S, int n, set C, set::iterator itS, list> &LK) { if (itS == S.end()) return; if (n == 0) { LK.insert(LK.begin(),C); return;} set D = C; C.insert(C.end(), *itS); itS++; if (C.size() == n){ LK.insert(LK.end(),C); } SubL(S,n,D,itS,LK); SubL(S,n,C,itS,LK); } //wrapper list> SubL(set &S, int n){ set C; C.clear(); list> LL; set::iterator itS = S.begin(); SubL(S,n,C,itS,LL); return LL; } list> all_subk(set &S){ list>allsubk; if(S.empty())return allsubk; for(int i=0;i>aux=SubL(S,i); allsubk.insert(allsubk.end(),aux.begin(),aux.end()); } return allsubk; } int get_suma(set C){ int suma=0; if(C.empty())return suma; for( set::iterator it=C.begin(); it!=C.end(); ++it ){ suma+=*it; } return suma; } float Promedio(set C){ float prom=0; if(C.empty())return prom; for( set::iterator it=C.begin(); it!=C.end(); ++it ) { prom+=*it; } prom=prom/C.size(); return prom; } bool prom_subc(set &S) { int promedio=Promedio(S); auto allsubk=all_subk(S); for( auto it=allsubk.begin(); it!=allsubk.end(); ++it ) { if(promedio==get_suma(*it)){ return true; } } return false; } int main() { Eval ev; int vrbs = 0; ev.eval<1>(prom_subc,vrbs); return 0; }