Pagini recente » Cod sursa (job #3359917) | Cod sursa (job #3359926) | Cod sursa (job #3359990)
#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;
}