Cod sursa(job #1238300)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 6 octombrie 2014 17:52:49
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <cstring>
#include <algorithm>
// bun deci la problema asta sortam liniile si coloanele si vedem care is distincte.
using namespace std;
const int nmax=36005;

char a[nmax][18]; // matricea
int v[nmax]; // Vom avea un vector v[x]=y , cu semnificatia ca a x-a linia din matricea ordonata este linia y din matricea initiala
int i,n,cont;

ifstream f("restante.in");
ofstream g("restante.out");

bool cmp (int x,int y)
{
   return(strcmp(a[x],a[y])>0); // functia asta compara stringul de pe linia x a matricii cu stringul de pe linia y
}


int main()
{
    f>>n; f.get();
    for (i=1;i<=n;i++)
    {
        f.getline(a[i],18);
        v[i]=i;
        sort(a[i],a[i]+strlen(a[i])); // sortam fiecare linie dupa ce o citim
    }
    sort (v+1,v+n+1,cmp); // functia asta va sorta practic vectorul v (care am zis ce retine) , si vom avra liniile sortate
    for(i=1;i<=n;i++)
      if(strcmp(a[v[i]],a[v[i-1]])&&strcmp(a[v[i]],a[v[i+1]])) // acuma ne vom folosi de vectorul v , unde avem liniile ; efectiv functia face urmatorul lucru , verifica daca linia i este diferita de cea anterioara sau de linia urmatoare , daca da , contorul creste
        cont++;
    g<<cont;
    f.close();
    g.close();
    return 0;
}
// ps : mersi de explicatie gabi