#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: Ramos Patricio int DNI=42476835; void get_largest_subset(set &S, set &C, double &promedio){ if(S.empty()){ return; } auto itS = S.begin(); double distanciaMinima = 0.00; while(itS != S.end()){ auto itS2 = S.begin(); set aux; aux.insert(*itS); while(itS2 != S.end()){ if(itS != itS2){ aux.insert(*itS2); } if(abs( (accumulate(aux.begin(),aux.end(),0)/ aux.size()) - promedio) < distanciaMinima){//intento de comparar las distancias y las que tengan la misma distancia toma el que menos elementos tiene, no llegue a plantear la relacion de orden. if(aux.size() != S.size()){ C.clear(); C.insert(aux.begin(),aux.end()); distanciaMinima = abs( accumulate(aux.begin(),aux.end(),0)/ aux.size() - promedio); } }else if(abs( accumulate(aux.begin(),aux.end(),0)/ aux.size() - promedio) == distanciaMinima){ if(aux.size() != S.size() and aux.size() < C.size()){ C.clear(); C.insert(aux.begin(),aux.end()); distanciaMinima = abs( (accumulate(aux.begin(),aux.end(),0)/aux.size()) - promedio) ; }/*else if(aux.size() != S.size() and aux.size() == C.size()){ C.clear(); C.insert(aux.begin(),aux.end()); distanciaMinima = abs((accumulate(aux.begin(),aux.end(),0)/aux.size() - promedio) ); }*/ }else if(abs( accumulate(aux.begin(),aux.end(),0)/ aux.size() - promedio) > distanciaMinima){ if(aux.size() != S.size() and C.empty()){ C.clear(); C.insert(aux.begin(),aux.end()); distanciaMinima = abs(accumulate(aux.begin(),aux.end(),0)/ aux.size() - promedio); } } itS2++; } itS++; } } void get_largest_subset(set &S, set &C){ if(S.empty()) return; double sum = accumulate(S.begin(),S.end(),0); double promedio = sum/S.size(); get_largest_subset(S,C,promedio); } //---:---<*>---:---<*>- FINALIZA CODIGO FUNCION --:---<*>---:---<*>---:---<*> int main() { Eval ev; int vrbs=0; ev.eval<1>(get_largest_subset,vrbs); return 0; }