| #include <fstream>
using namespace std;
ifstream fin("matrice.in");
ofstream fout("matrice.out");
int main()
{
    int n,m,A[101][101];
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            fin>>A[i][j];
    //a) Calculati si afisati elementul minim din matrice
    int min=1000;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(A[i][j]<min) min=A[i][j];
    fout<<min<<endl;
    //b) Afisati numarul de linii pe care apare elementul minim din matrice
    int c=0;
    for(int i=1;i<=n;i++)
    {
        int gasit=0;
        for(int j=1;j<=m;j++)
            if(A[i][j]==min) gasit=1;
        if (gasit==1) c++;
    }
    fout<<c<<endl;
    //c) Afisati coloanele cu elementele ordonate strict descrescator
    for(int j=1;j<=m;j++)
    {
        int ok=1;
        for(int i=1;i<n;i++)
            if(A[i][j]<=A[i+1][j]) ok=0;
        if(ok==1)
        {
            for(int i=1;i<=n;i++) fout<<A[i][j]<<" ";
            fout<<endl;
        }
    }
    //d) Afisati in orice ordine elementele care sunt unice pe linia lor
    //Varianta cu vector de frecventa:
    for(int i=1;i<=n;i++)
    {
        int F[1001]={0};
        for(int j=1;j<=m;j++)
            F[A[i][j]]++;
        for(int v=0;v<=1000;v++)
            if(F[v]==1) fout<<v<<" ";
    }
    fout<<endl;
    //varianta cu numarare a aparitiilor
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int ap=0;
            for(int k=1;k<=m;k++)
                if(A[i][j]==A[i][k]) ap++;
            if(ap==1) fout<<A[i][j]<<" ";
        }
    fout<<endl;
    //varianta cu reducere la absurd
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int ok=1;
            for(int k=1;k<=m;k++)
                if(j!=k && A[i][j]==A[i][k]) ok=0;
            if(ok==1) fout<<A[i][j]<<" ";
        }
    fout<<endl;
    //e) Sa se interschimbe cele doua coloane alaturate de la mijlocul matricii si sa se afiseze matricea obtinuta
    for(int i=1;i<=n;i++)
    {
        int aux=A[i][m/2];
        A[i][m/2]=A[i][m/2+1];
        A[i][m/2+1]=aux;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            fout<<A[i][j]<<" ";
        fout<<endl;
    }
    return 0;
}
 |