// topcoder.cpp: define el punto de entrada de la aplicación de consola. // //#include "stdafx.h" #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<cstdlib> #include<algorithm> #include<utility> #define db(a) cout << #a << " = " << a << endl; using namespace std; bool cmp(const pair<int, string>& a,const pair<int, string>& b) { return a.first < b.first; } int val(const char* a) { int len = strlen(a), cont = 0; for (int i = 0; i < len; i++) for (int j = i + 1; j < len; j++) if(a[i] > a[j]) cont++; return cont; } int main() { /*freopen("in.in", "r", stdin); freopen("ou.out", "w", stdout);*/ char linea[1000]; int test, n, m; bool first = true; gets(linea); test = atoi(linea); gets(linea); while (test--) { gets(linea); sscanf(linea, "%d %d", &n, &m); vector<pair <int, string> > lista(m); for (int i = 0; i < m; i++) { gets(linea); lista[i] = make_pair(val(linea), linea); } gets(linea); stable_sort(lista.begin(), lista.end(), cmp); if(!first) printf("\n"); first = false; for (int i = 0; i < m; i++) { printf("%s\n", lista[i].second.c_str()); } } return 0; }
lunes, 24 de octubre de 2011
612 - DNA Sorting, uva
Suscribirse a:
Enviar comentarios (Atom)
jefedito jefon cual es la diferencia entre sort y estable_sort una ayuda ps
ResponderEliminarstable_sort no intercambia elementos iguales en el proceso de sort (en mi el proceso de sort lo hice en base a "first" porque alli almacenaba cuantos cambios tenia la cadena evaluada), si 2 cadenas tenian el mismo "first" osea digamos 4 inversiones, si le pasaba al sort normal se iban a intercambiar 2 cadenas diferentes pero con el mismo valor "first" debido a la implementación del sort, algo que no queria debido a las restricciones del problema (decia ordenar de menor a mayor número de inversiones, si 2 cadenas tenian el mismo número de inversiones entonces mantener ese orden de aparición de las cadenas también), en el caso de stable_sort si los 2 elementos tiene 4 en "first" se mantienen sus posiciones de ambos no intercambiandolos durante el proceso de sort.
Eliminarmira este link:
http://stackoverflow.com/a/811125/1681445