Pagini recente » Cod sursa (job #1046819) | Cod sursa (job #2751734) | Cod sursa (job #2354496) | Cod sursa (job #1987026) | Cod sursa (job #285923)
Cod sursa(job #285923)
#include<fstream>
#include<algorithm>
using namespace std;
int t,a,b,k,n,gr1[100010],gr2[100010],i,j,pasi,gropi,col,q=0,p=0,l1,c1,l2,c2;
int cmp(int a,int b)
{ return a<b;}
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;
}
sort(gr1+1,gr1+p+1,cmp);
sort(gr2+1,gr2+q+1,cmp);
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;
}