Cod sursa(job #3359990)

Utilizator genius112Prodan Alexandra genius112 Data 7 iulie 2026 16:18:28
Problema Struti Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <unordered_map>
#include <deque>

using namespace std;

int dx, dy, n, m, a[1001][1001], mini, i, j, p, x, y, nr, nrmx, nrmn;

int main() 
{
    ifstream cin ("struti.in");
    ofstream cout ("struti.out");

    cin >> n >> m >> p;

    for ( i = 1; i <= n; i++ ) {
        for ( j = 1; j <= m; j++ ) {
            cin >> a[i][j];
        }
    }
    while ( p > 0 ) {
        cin >> dx >> dy;
        mini = 8000;
        nr = 1;
        for ( i = 1; i <= n-dx+1; i++ ) {
            for ( j = 1; j <= m-dy+1; j++ ) {
                nrmx = 0;
                nrmn = 8000;
                for ( x = i; x < i+dx; x++ ) {
                    for ( y = j; y < j+dy; y++ ) {
                        nrmx = max ( nrmx, a[x][y] );
                        nrmn = min ( nrmn, a[x][y] );
                    }
                }
                if ( nrmx-nrmn < mini ) {
                    mini = nrmx-nrmn;
                    nr = 1;
                }
                else if ( nrmx-nrmn == mini ) {
                    nr++;
                }
            }
        }
        if ( dx != dy ) {
            swap ( dx, dy );
            for ( i = 1; i <= n-dx+1; i++ ) {
                for ( j = 1; j <= m-dy+1; j++ ) {
                    nrmx = 0;
                    nrmn = 8000;
                    for ( x = i; x < i+dx; x++ ) {
                        for ( y = j; y < j+dy; y++ ) {
                            nrmx = max ( nrmx, a[x][y] );
                            nrmn = min ( nrmn, a[x][y] );
                        }
                    }
                    if ( nrmx-nrmn < mini ) {
                        mini = nrmx-nrmn;
                        nr = 1;
                    }
                    else if ( nrmx-nrmn == mini ) {
                        nr++;
                    }
                }
            }
        }
        cout << mini << ' ' << nr << '\n';
        p--;
    }

    return 0;
}