Pagini recente » Cod sursa (job #1191944) | Cod sursa (job #2009127) | Cod sursa (job #993790) | Cod sursa (job #1848224) | Cod sursa (job #1953219)
# include <fstream>
# include <algorithm>
# define DIM 100010
# define f first
# define s second
using namespace std;
ifstream fin("gropi.in");
ofstream fout("gropi.out");
pair<int,int> v[DIM];
int s[DIM],n,m,i,j,step,x,y,a,b,aux,sol;
int main () {
fin>>x>>n;
for(i=1;i<=n;i++){
fin>>x>>y;
v[i].f=y;
v[i].s=3-x;
}
sort(v+1,v+n+1);
for(i=2;i<=n;i++)
if(v[i].s==v[i-1].s)
s[i]=s[i-1]+v[i].f-v[i-1].f;
else
s[i]=s[i-1]+v[i].f-v[i-1].f+1;
fin>>m;
for(i=1;i<=m;i++){
fin>>b>>a>>y>>x;
if(a>x){
swap(b,y);
swap(a,x);
}
if(a==x){
if(b!=y)
fout<<"1\n";
else
fout<<"0\n";
continue;
}
for(step=1;step<=n;step*=2);
for(j=0;step;step/=2)
if(j+step<=n&&v[j+step].f<a)
j+=step;
j++;
aux=j;
sol=v[j].f-a;
if(b!=v[j].s)
sol++;
for(step=1;step<=n;step*=2);
for(j=0;step;step/=2)
if(j+step<=n&&v[j+step].f<=x)
j+=step;
sol+=x-v[j].f;
if(y!=v[j].s)
sol++;
sol+=s[j]-s[aux];
fout<<sol+1<<"\n";
}
return 0;
}