Pagini recente » Cod sursa (job #3270691) | Cod sursa (job #561456) | Cod sursa (job #762276) | Cod sursa (job #2138744) | Cod sursa (job #2038257)
#include <cstdio>
#define N 1005
#define INF 8005
using namespace std;
int n, m, p, dx, dy, mat[N][N], mini=INF, maxi;
int minim=INF, nr;
void citire()
{
scanf("%d %d %d\n", &n, &m, &p);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d ", &mat[i][j]);
}
void parcurgere_lung(int sti, int stj)
{
for(int i=sti;i<sti+dx;i++)
for(int j=stj;j<stj+dy;j++)
{
if(mini>mat[i][j])
mini=mat[i][j];
if(maxi<mat[i][j])
maxi=mat[i][j];
}
}
void parcurgere_latime(int sti, int stj)
{
for(int i=sti;i<sti+dy;i++)
for(int j=stj;j<stj+dx;j++)
{
if(mini>mat[i][j])
mini=mat[i][j];
if(maxi<mat[i][j])
maxi=mat[i][j];
}
}
void parcurgere()
{
for(int i=0;i<=n-dx;i++)
for(int j=0;j<=n-dy;j++)
{
parcurgere_lung(i, j);
// printf("%d-%d=%d\n", maxi, mini, maxi-mini);
int x=maxi-mini;
maxi=0; mini=INF;
if(x==minim)
nr++;
else
if(x<minim)
{
nr=1;
minim=x;
}
}
if(dx!=dy)
for(int i=0;i<=n-dy;i++)
for(int j=0;j<=n-dx;j++)
{
parcurgere_latime(i, j);
// printf("%d-%d=%d\n", maxi, mini, maxi-mini);
int x=maxi-mini;
maxi=0; mini=INF;
if(x==minim)
nr++;
else
if(x<minim)
{
nr=1;
minim=x;
}
}
}
int main()
{
freopen("struti.in", "r", stdin);
freopen("struti.out", "w", stdout);
citire();
for(int t=0;t<p;t++)
{
scanf("%d %d\n", &dx, &dy);
parcurgere();
printf("%d %d\n", minim, nr);
}
return 0;
}