Cod sursa(job #999528)
Utilizator | Data | 20 septembrie 2013 17:28:39 | |
---|---|---|---|
Problema | Struti | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.27 kb |
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
freopen("struti.in","r",stdin);
freopen("struti.out","w",stdout);
int n,m,p,min,nr,minp,maxp,i,j,k,l,x,y,a;
cin >> m >> n >> p;
int mat[m][n];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin >> mat[i][j];
}
}
for(a=0;a<p;a++)
{
cin >> x >> y;
min=8000;
nr=0;
for(i=0;i<=m-x;i++)
{
for(j=0;j<=n-y;j++)
{
minp=mat[i][j];
maxp=mat[i][j];
for(k=i;k<i+x;k++)
{
for(l=j;l<j+y;l++)
{
if(mat[k][l]>maxp)
{
maxp=mat[k][l];
}
else if(mat[k][l]<minp)
{
minp=mat[k][l];
}
}
}
if(min>maxp-minp)
{
min=maxp-minp;
nr=1;
}
else if (min==(maxp-minp))
{
nr++;
}
}
}
if(x!=y)
{
for(i=0;i<=m-y;i++)
{
for(j=0;j<=n-x;j++)
{
minp=mat[i][j];
maxp=mat[i][j];
for(k=i;k<i+y;k++)
{
for(l=j;l<j+x;l++)
{
if(mat[k][l]>maxp)
{
maxp=mat[k][l];
}
else if(mat[k][l]<minp)
{
minp=mat[k][l];
}
}
}
if(min>maxp-minp)
{
min=maxp-minp;
nr=1;
}
else if (min==(maxp-minp))
{
nr++;
}
}
}
}
cout << min << " " << nr << endl;
}
return 0;
}