codeforces 1366B(区间合并、双指针)

题目

题意:通过交换a[k]可以获得的1可以在的最多位置得个数

AC代码:

package 练习;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main {
 static Scanner sc=new Scanner(System.in);
 public static void main(String[] args) {
  //show();
  for(int t=sc.nextInt();t>0;t--) {
   show();
  }
 }
 private static void show() {
  int n=sc.nextInt();
  int x=sc.nextInt();
  int m=sc.nextInt();
  int l=x,r=x;
  int p[][]=new int [m][2];
  for(int i=0;i<m;i++){
   p[i][0]=sc.nextInt();
   p[i][1]=sc.nextInt();
   if(!(p[i][0]>r||p[i][1]<l)) {
    l=Math.min(l,p[i][0]);
    r=Math.max(r,p[i][1]);
   }
  }
  System.out.println(r-l+1);
 }
}

你可能感兴趣的:(二分,双指针)