Pagini recente » Cod sursa (job #2723699) | Cod sursa (job #2800144) | Cod sursa (job #1502023) | Cod sursa (job #1651035) | Cod sursa (job #1281909)
#include<stdio.h>
#include<algorithm>
#include<vector>
#define mp make_pair
#define fs first
#define sc second
using namespace std;
int m[1010][1010];
int ma[1010][1010];
int mi[1010][1010],P,N,M,st,dr;
int dq[10100];
int dq1[10100];
int dq2[10100];
int Nx,Mx;
void dqmi(int x){
st=dr=0;
for(int i=1;i<=N;++i){
while(dr > st && m[dq[dr-1]][x] > m[i][x]){
--dr;
}
dq[dr] = i;
++dr;
if(i-dq[st]+1 > Nx)
++st;
mi[i][x] = m[dq[st]][x];
}
}
void dqma(int x){
st=dr=0;
for(int i=1;i<=N;++i){
while(dr > st && m[dq[dr-1]][x] < m[i][x]){
--dr;
}
dq[dr] = i;
++dr;
if(i-dq[st]+1 > Nx)
++st;
ma[i][x] = m[dq[st]][x];
}
}
void print(){
for(int i=1;i<=N;++i){
for(int j=1;j<=M;++j){
printf("%d ",mi[i][j]);
}
printf("\n");
}
printf("\n");
for(int i=1;i<=N;++i){
for(int j=1;j<=M;++j){
printf("%d ",ma[i][j]);
}
printf("\n");
}
}
int mind,nrr;
void make(int L1,int L2){
Nx = L1;
Mx = L2;
for(int i=1;i<=M;++i){
dqmi(i);
dqma(i);
}
mind = 10101010;
nrr = 0;
int st1=0,dr1=0;
int st2=0,dr2=0;
for(int i=Nx;i<=N;++i){
st1=st2=dr1=dr2=0;
for(int j=1;j<=M;++j){
while(dr1 > st1 && ma[i][dq1[dr1-1]] < ma[i][j]){
--dr1;
}
dq1[dr1] = j;
++dr1;
if(j-dq1[st1]+1 > Mx)
++st1;
while(dr2 > st2 && mi[i][dq2[dr2-1]] > mi[i][j]){
--dr2;
}
dq2[dr2] = j;
++dr2;
if(j-dq2[st2]+1 > Mx)
++st2;
if(j>=Mx){
int mini = mi[i][dq2[st2]];
int maxi = ma[i][dq1[st1]];
//printf("%d %d %d %d %d\n",i,j,mini,maxi,maxi-mini);
if(maxi - mini < mind){
mind = maxi-mini;
nrr = 1;
} else if(maxi - mini == mind){
++nrr;
}
}
}
}
//print();
}
int main(){
freopen("struti.in","r",stdin);
freopen("struti.out","w",stdout);
scanf("%d%d%d",&N,&M,&P);
for(int i=1;i<=N;++i){
for(int j=1;j<=M;++j){
scanf("%d",&m[i][j]);
}
}
for(int i=1;i<=P;++i){
int x,y;
int sol1=0,sol2=0;
scanf("%d %d",&x,&y);
make(x,y);
sol1=mind;
sol2=nrr;
if(x != y){
make(y,x);
if(sol1 == mind)
sol2+=nrr;
else if(sol1 > mind){
sol1=mind;
sol2=nrr;
}
}
printf("%d %d\n",sol1,sol2);
}
}