Cod sursa(job #205979)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 3 septembrie 2008 20:11:22
Problema Struti Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>

FILE *fin=fopen("struti.in","r"),
    *fout=fopen("struti.out","w");

int N,M,P,a[1005][1005];
int nr,sol;

void rezolvare(int i,int j){
    for(int k=1;k<=N-i+1;k++)
        for(int l=1;l<=M-j+1;l++){
            int min=8009,max=-1;
            for(int kk=k;kk<=k+i-1;kk++)
                for(int ll=l;ll<=l+j-1;ll++){
                        if(a[kk][ll]>max) max=a[kk][ll];
                        if(a[kk][ll]<min) min=a[kk][ll];
                }
            if(max-min==sol) ++nr;
            else
                if(max-min<sol){
                    sol=max-min;
                    nr=1;
                }
        }

}

int main(){
    fscanf(fin,"%d%d%d",&N,&M,&P);

    for(int i=1;i<=N;i++)
        for(int j=1;j<=M;j++)
            fscanf(fin,"%d",&a[i][j]);

    for(int k=1;k<=P;k++){
        int i,j;
        fscanf(fin,"%d %d",&i,&j);
        nr=0;sol=8008;

        rezolvare(i,j);
        if(i!=j)
            rezolvare(j,i);

        fprintf(fout,"%d %d\n",sol,nr);
    }

    fclose(fin);
    fclose(fout);
    return 0;

}