Pagini recente » Cod sursa (job #1881595) | Cod sursa (job #307919) | Cod sursa (job #677045) | Cod sursa (job #2701708) | Cod sursa (job #197836)
Cod sursa(job #197836)
# include <stdio.h>
# include <stdlib.h>
using namespace std;
# define FIN "poarta.in"
# define FOUT "poarta.out"
# define MAXN 1001
# define inf 101
int N,M,K,i,j;
int min,mini,minf;
int aux,x,y,ct1,ct2;
int xi,yi,xf,yf;
int P[inf][inf];
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%d%d%d",&N,&M,&K);
scanf("%d%d",&xi,&yi);
scanf("%d%d",&xf,&yf);
min=abs(xf-xi)+abs(yf-yi);
for (i = 1; i <= N; ++i)
P[i][1]=1;
for (i = 1; i <= M; ++i)
P[1][i]=1;
for (i = 2; i <= N; ++i)
for (j = 2; j <= M; ++j)
P[i][j]=(P[i-1][j]+P[i][j-1])%997;
mini = minf = MAXN;
ct1 = ct2 = 0;
for (i = 1; i <= K; ++i)
{
scanf("%d%d",&x,&y);
aux=abs(xi-x)+abs(yi-y);
if (aux<mini)
{
mini=aux;
ct1=P[abs(xi-x)+1][abs(yi-y)+1];
}
else
if (aux==mini)
ct1+=P[abs(xi-x)+1][abs(yi-y)+1];
aux=abs(xf-x)+abs(yf-y);
if (aux<minf)
{
minf=aux;
ct2=P[abs(xf-x)+1][abs(yf-y)+1];
}
else
if (aux==minf)
ct2+=P[abs(xf-x)+1][abs(yf-y)+1];
}
if (mini+minf+1<min)
{
min=mini+minf+1;
printf("%d\n%d",min,(ct1*ct2)%997);
}
else
printf("%d\n%d",min,P[abs(xf-xi)+1][abs(yf-yi)+1]%997);
return 0;
}