聊天(蘑菇街)-Java

来源:互联网 发布:python 命令行 编辑:程序博客网 时间:2024/04/30 05:31

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);       }    }}
0 0