Cod sursa(job #197599)

Utilizator portocalaDiculescu Elena Alexandra portocala Data 5 iulie 2008 11:41:52
Problema Gropi Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 0.8 kb
#include<fstream.h>
#define dim 2000000001
long a[2][dim];
long c,n,m;
ifstream f("gropi.in");
ofstream g("gropi.out");

void fugi(long x,long y,long xx,long yy,long s)
{if(y==yy)
  {if(x==xx)g<<s<<'\n';
    else g<<s+1<<'\n';
    }
  else
   {if(a[x][y]>=yy)
     {s+=yy-y+1;fugi(x,yy,xx,yy,s);}
     else
      {s+=a[x][y]-y+1;
       fugi((x+1)%2,a[x][y],xx,yy,s);
      }
   }
}

int main()
{long i,j,x,y,xx,yy;
f>>c>>n;
for(i=1;i<=c;i++)
 a[0][i]=a[1][i]=c;
for(i=1;i<=n;i++)
 {f>>x>>y;
  x--;
  a[x][y]=0;
  j=--y;
  while(a[x][j])
   {a[x][j]=y;
    j--;
   }
  }
f>>m;
for(i=1;i<=m;i++)
 {f>>x>>y>>xx>>yy;
  x--;xx--;
  if(yy<y){j=y;y=yy;yy=j;
	   j=x;x=xx;xx=j;
	  }
  if(a[x][y]>=yy) g<<yy-y+1<<'\n';
   else fugi(x,y,xx,yy,0);
 }
f.close();
g.close();
return 0;
}