Pagini recente » Cod sursa (job #1763198) | Cod sursa (job #2435467) | Cod sursa (job #3245372) | Cod sursa (job #2263041) | Cod sursa (job #1238300)
#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