Pagini recente » Profil Simon2712 | Monitorul de evaluare | Cod sursa (job #2742433) | Profil UAIC_Pojoga_Onesim_Berendea | Cod sursa (job #204557)
Cod sursa(job #204557)
#include <stdio.h>
#include <bitset>
#define min(a,b) ((a<b)?a:b)
using namespace std;
long n,m,T,i,j,t,p,l,c,l1,l2,c1,c2;
long v[100005],ind[1005],nr1,nr2;
bitset<100005> line;
long bs(long x){
long low=1,high=m,mid;
while (low<high){
mid=(low+high)/2;
if (v[ind[mid]]>=x)
high=mid;
else low=mid+1;
}
if (t==1)return low+1;
else return low-1;
}
int comp(const void *n1,const void *n2){
return v[*((long*)n1)]-v[*((long*)n2)];
}
int main(){
freopen("gropi.in","r",stdin);
freopen("gropi.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1;i<=m;i++){
scanf("%ld %ld",&l,&c);
v[i]=c;
line[i]=l-1;
ind[i]=i;
}
qsort(ind+1,m,sizeof(long),comp);
scanf("%ld",&T);
for (i=1;i<=T;i++){
scanf("%ld %ld %ld %ld",&l1,&c1,&l2,&c2);
if (c2<c1){c=c1;c1=c2;c2=c;c=l1;l1=l2;l2=c;}
t=1;nr1=bs(c1);
t=2;nr2=bs(c2);
c=c2-c1+1;
for (j=nr1;j<nr2;j++)
if (line[ind[j]]^line[ind[j+1]])c++;
if (nr1<=nr2){
if (line[ind[nr1]]==l1-1)c++;
if (line[ind[nr2]]==l2-1)c++;
}
else if (l1!=l2)c++;
printf("%ld\n",c);
}
return 0;
}