#include "libscl.h" 
using namespace scl; 
using namespace std;

namespace {

  typedef vector<string> record;
  typedef vector<string>::iterator recitr;

  typedef vector<record> rule;
  typedef vector<record>::iterator rulitr;
  typedef vector<record>::size_type rulst;
}

int main(int argc, char** argp, char** envp)
{

  if (argc == 1) error("Error, need input filename on command line");
  ++argp;
  string filename = *argp;

  ifstream fin;
  ofstream fout;

  fin.open(filename.c_str());
  if (!fin) error("Error, cannot open " + filename);

  rule rul;

  string line;
  while (getline(fin,line)) {
    record rec = cutstr(line,' ');
    char last = rec[0][rec[0].size() - 1];
    if (rec.size() == 6 && last == '2') {
      rul.push_back(rec);
    }
  }

  realmat confidence(rul.size(),1);

  INTEGER count = 1;
  for (rulitr r=rul.begin(); r!=rul.end(); ++r) {
    (*r)[3][0] = ' ';
    (*r)[3][(*r)[3].size()-1] = ' ';
    (*r)[4][(*r)[4].size()-1] = ' ';
    (*r)[5][(*r)[5].size()-1] = ' ';
    confidence[count++] = atof((*r)[4].c_str());
  }

  intvec sidx = confidence.sort(-1);

  for (INTEGER j=1; j<=sidx.size(); ++j) {
    rulst i = sidx[j] - 1;    
    cout << rul[i][0] << " & $\\leftarrow$ &" << rul[i][2] << " & "
         << rul[i][3] << " & " << rul[i][4] << " & " << rul[i][5] << "\\\\\n";
  }

  return 0;
}
