聊天(蘑菇街)-Java

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


       }

    }
}

你可能感兴趣的:(java,聊天)