A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?
输入描述:
第一行数据四个整数:p,q,l,r(1≤p,q≤50,0≤l≤r≤1000)。接下来p行数据每一行有一对整数ai,bi(0≤aii+1>bi,ci+1>di
输出描述:
输出答案个数
输入例子:
2 3 0 20
15 17
23 26
1 4
7 11
15 17
输出例子:
20
//总共就是可能发生重叠的4种情况
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int p=in.nextInt();
int q=in.nextInt();
int l=in.nextInt();
int r=in.nextInt();
int a[][]=new int[p][2];
for(int i=0;i<p;i++){
a[i][0]=in.nextInt();
a[i][1]=in.nextInt();
}
int c[][]=new int[q][2];
for(int i=0;i<q;i++){
c[i][0]=in.nextInt();
c[i][1]=in.nextInt();
}
int s[]=new int[1000];
int total=0;
for(int t=l;t<=r;t++){
for(int i=0;i<p;i++){
for(int j=0;j<q;j++){
if(a[i][0]<=c[j][0]+t||a[i][1]<=c[j][1]+t||(a[i][0]>c[j][0]+t)&&(a[i][1]>=c[j][1]+t)||(a[i][0]<=c[j][0]+t)&&(a[i][1]<c[j][1]+t))
s[t]=1;
}
}
total=total+s[t];
}
System.out.println(total);
}
}
}