Pagini recente » Cod sursa (job #2891714) | Cod sursa (job #2015985) | Cod sursa (job #2685095) | Istoria paginii utilizator/stefaniairina | Cod sursa (job #203056)
Cod sursa(job #203056)
#include<fstream.h>
int t,a,b,k,n,gr1[100010],gr2[100010],i,j,pasi,gropi,col,q=0,p=0,l1,c1,l2,c2;
void pozitie (int li, int ls, int &k, int v[100010])
{ int i,j,di,dj,aux;
i=li; j=ls; di=0; dj=1;
while(i<j)
{if(v[i]>v[j]) { aux=v[i]; v[i]=v[j]; v[j]=aux;
aux=di; di=dj; dj=aux;}
i=i+di;
j=j-dj;
}
k=i;
}
void quick ( int li , int ls, int v[100010])
{
if(li<ls)
{ pozitie(li,ls,k,v);
quick(li,k-1,v);
quick(k+1,ls,v);
}
}
int main()
{
ifstream f("gropi.in");
ofstream g("gropi.out");
f>>col>>gropi;
for(i=1;i<=gropi;i++)
{ f>>l1>>c1;
if(l1==1) gr1[++p]=c1;
else gr2[++q]=c1;
}
quick(1,p,gr1);
quick(1,q,gr2);
f>>n;
for(t=1;t<=n;t++)
{ f>>l1>>c1>>l2>>c2; pasi=1;
if(c1<c2)
{ a=1; b=1;
while(c1!=c2)
{ if(l1==1)
{ while(c1>gr1[a]&&gr1[a]<c2&&a<=p) a++;
if(a>p||gr1[a]>c2) {pasi=pasi+c2-c1; c1=c2;}
else
{l1=2; pasi=pasi+gr1[a]-c1; c1=gr1[a]-1;}
}
else
{ while(c1>gr2[b]&&gr2[b]<c2&&b<=q) b++;
if(b>q||gr2[b]>c2) { pasi=pasi+c2-c1; c1=c2;}
else
{l1=1; pasi=pasi+gr2[b]-c1; c1=gr2[b]-1;}
}
}
if(l1!=l2) pasi++;
}
else
{ a=p; b=q;
while(c1!=c2)
{ if(l1==1)
{ while(c1<gr1[a]&&gr1[a]>c2&&a>0) a--;
if(a<1||gr1[a]<c2) {pasi=pasi+c1-c2; c1=c2;}
else
{l1=2; pasi=pasi+c1-gr1[a]; c1=gr1[a]+1;}
}
else
{ while(c1<gr2[b]&&gr2[b]>c2&&b>0) b--;
if(b<1||gr2[b]<c2) {pasi=pasi+c1-c2; c1=c2;}
else
{l1=1; pasi=pasi+c1-gr2[b]; c1=gr2[b]+1;}
}
}
if(l1!=l2) pasi++;
}
g<<pasi<<'\n';
}
f.close();
g.close();
return 0;
}