Cod sursa(job #387066)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 ianuarie 2010 19:39:59
Problema Struti Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 kb
#include <cstdio>

#define file_in "struti.in"
#define file_out "struti.out"

int n,m,p,i,j,k,l,max,min,pmax,dx,dy,nrp;
int a[1010][1010];

int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d %d", &n, &m, &p);
	for (i=1;i<=n;++i) 
		 for (j=1;j<=m;++j)
			  scanf("%d", &a[i][j]);
	/*for (i=0;i<=n+1;++i)
          a[0][i]=a[i][m]=0x3f3f3f3f;
	for (i=0;i<=m+1;++i)
          a[i][0]=a[n][i]=0x3f3f3f3f;	 
	*/
		
	while(p--)
    {
	
		scanf("%d %d", &dx, &dy);
		
		if (dx==dy)
		{
				
		nrp=0;
		pmax=0x3f3f3f3f;
		for (i=1;i<=n-dx+1;++i)
			 for (j=1;j<=m-dy+1;++j)
			 {
				 min=0x3f3f3f3f;
				 max=0;
				 
				 for (k=i;k<=dx+i-1;++k)
					  for (l=j;l<=dy+j-1;++l)
					  {
						  if (a[k][l]>max) max=a[k][l];
						  if (a[k][l]<min) min=a[k][l];
					  }
					  
				 if (max-min<pmax)
				 {
					 pmax=max-min;
					 nrp=1;
				 }
				 else
				 if (max-min==pmax)
					 nrp++;
			 }
	    printf("%d %d\n", pmax,nrp);
		}
		else
		{
			nrp=0;
		pmax=0x3f3f3f3f;
		for (i=1;i<=n-dx+1;++i)
			 for (j=1;j<=m-dy+1;++j)
			 {
				 min=0x3f3f3f3f;
				 max=0;
				 
				 for (k=i;k<=dx+i-1;++k)
					  for (l=j;l<=dy+j-1;++l)
					  {
						  if (a[k][l]>max) max=a[k][l];
						  if (a[k][l]<min) min=a[k][l];
					  }
					  
				 if (max-min<pmax)
				 {
					 pmax=max-min;
					 nrp=1;
				 }
				 else
				 if (max-min==pmax)
					 nrp++;
			 }
				
		//	nrp=0;
		//pmax=0x3f3f3f3f;
		for (i=1;i<=n-dy+1;++i)
			 for (j=1;j<=m-dx+1;++j)
			 {
				 min=0x3f3f3f3f;
				 max=0;
				 
				 for (k=i;k<=dy+i-1;++k)
					  for (l=j;l<=dx+j-1;++l)
					  {
						  if (a[k][l]>max) max=a[k][l];
						  if (a[k][l]<min) min=a[k][l];
					  }
					  
				 if (max-min<pmax)
				 {
					 pmax=max-min;
					 nrp=1;
				 }
				 else
				 if (max-min==pmax)
					 nrp++;
			 }
				 
		
	    printf("%d %d\n", pmax,nrp);
		}
			
	
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}