Pagini recente » Cod sursa (job #2110035) | Cod sursa (job #45522) | Cod sursa (job #445777) | Borderou de evaluare (job #2059547) | Cod sursa (job #265452)
Cod sursa(job #265452)
#include<stdio.h>
int x[2][50001],i,j,k,l,m,n,a,b,sol;
void filla(){
if(x[0][i]==-1)return ;
if(x[0][i-1]>=1)
if(x[0][i]==0||(x[0][i-1]+1<x[0][i]))x[0][i]=x[0][i-1]+1;
if(x[1][i]>=1)
if(x[0][i]==0||(x[1][i]+1<x[0][i]))x[0][i]=x[1][i]+1;
}
void fillb()
{if(x[1][i]==-1)return;
if(x[1][i-1]>=1)
if(x[1][i]==0||(x[1][i-1]+1<x[1][i]))x[1][i]=x[1][i-1]+1;
if(x[0][i]>=1)
if(x[1][i]==0||(x[0][i]+1<x[1][i]))x[1][i]=x[0][i]+1;
}
int main(){
FILE *f=fopen("gropi.in","r");
fscanf(f,"%d %d",&m,&n);
for(i=1;i<=n;i++)
{fscanf(f,"%d %d",&a,&b);
x[a-1][b]=-1;}
x[0][1]=1;
if(x[1][1]!=-1)x[1][1]=2;
for(i=2;i<=m;i++)
if(x[0][i-1]!=-1)
{filla();fillb();}
else
if(x[1][i-1]!=-1)
{fillb();filla();}
else
{x[0][i]=1;x[1][i]=2;}
FILE *g=fopen("gropi.out","w");
fscanf(f,"%d",&m);
for(i=1;i<=m;i++)
{fscanf(f,"%d %d %d %d",&a,&b,&k,&l);
a--;k--;
a=x[a][b];k=x[k][l];
if(a>k)sol=a-k+1;
else
sol=k-a+1;
fprintf(g,"%d\n",sol);}
fclose(f);
fclose(g);
return 0;}