👤

Cerinţa

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine cea mai mare valoare care apare în matrice de cel puțin două ori.
Date de intrare

Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.
Date de ieşire

Programul afișează pe ecran cea mai mare valoare care apare în matrice de cel puțin două ori.
Restricţii şi precizări

1 ≤ m,n ≤ 100
elementele matricei vor fi mai mici decât 1.000.000
dacă în matrice nu se repeta nici o valoare se va afișa IMPOSIBIL


Răspuns :

#include <iostream>

using namespace std;

int main()
{
    int mat[100][100],n,m,i,j,maxim=0,k=0;
    cin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        cin>>mat[i][j];
     for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(maxim<mat[i][j])
             maxim=mat[i][j];
        for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(maxim==mat[i][j])
             k=k+1;
        if(k>=2)
            cout<<maxim;
        else
            cout<<"IMPOSIBIL";
    return 0;
}


#include <iostream>

using namespace std;

int a[101][101],n,m,i,j,Min,Max,p,s;


int main()
{

    cin >> n >> m;

    Min=1000001;
    Max=-1000001;

    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            {
                cin >> a[i][j];
                if(a[i][j]>Max) Max=a[i][j];
                else if(a[i][j]<Min) Min=a[i][j];
            }

    for(int k=Max;k>=Min;k--)
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
            {

                if(k==a[i][j])
                {

                    if(p!=k) s=0;
                    s++;
                    if(k==p and s==2)
                    {
                        cout << k;
                        return 0;
                    }
                    p=k;
                }
            }

    cout << "IMPOSIBIL";

    return 0;

}