]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/main.cpp
Bugfix (estaba eligiendo a la persona menos preferida =)
[z.facultad/75.29/susanita.git] / src / main.cpp
1 #include "backtracking.h"
2 #include "galeshapley.h"
3 #include "parser.h"
4 #include "timer.h"
5 #include <iostream>
6
7 int
8 main(int argc, char* argv[])
9 {
10         Susanita* susanita = 0;
11         switch (argc)
12         {
13                 case 2: //Gale-Sharpley por default
14                         // 2N*2 para asegurar que el hash este ocupado al 50%
15                         // y sea O(1) (2N porque guarda nombres de mujer y de
16                         // hombre y * 2 para que esté ocupado al 50%)
17                         susanita = new GaleShapley(Parser::get_n(argv[1]) * 4);
18                         break;
19                 case 3: // BackTracking se especifica con tercer parámetro "-bt"
20                         if (strcmp(argv[2], "-bt"))
21                         {
22                                 std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
23                                 return 1;
24                         }
25                         // Ver anterior
26                         susanita = new BackTracking (Parser::get_n(argv[1]) * 4);
27                         break;
28                 default:
29                         std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
30                         return 2;
31         }
32         Parser p(*susanita);
33         if (!p.input(argv[1]))
34         {
35                 std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
36                 delete susanita;
37                 return 3;
38         }
39         timer t;
40         susanita->casamentear();
41         p.output();
42         // Todo OK
43         delete susanita;
44         return 0;
45
46 }
47