package 蓝桥杯;
import java.util.Arrays;
import java.util.Scanner;
public class VO二分_Aggressivecows {
static int N,C;
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
N=reader.nextInt();
C=reader.nextInt();
int[] a=new int[N];
int Nb=N;
int l=0;
while(Nb!=0) {
a[l++]=reader.nextInt();
Nb--;
}
Arrays.sort(a);
System.out.println(BinaryTree(a));
}
static int BinaryTree(int[] a) {
int L=1,R=1000000000/C,maxD=0;
int D=(L+R)/2;
while(L<=R) {
if(D_can(a,D)) {
maxD=D;
L=D+1;
}
if(!D_can(a,D)) {
R=D-1;
}
D=(L+R)/2;
}
return maxD;
}
static boolean D_can(int[] a,int D) {
int count=1;
int Db=a[0]+D;
for(int i=1;i<C;i++) {
for(int j=count;j<N;j++) {
if(a[j]>=Db) {
count++;
Db=a[j]+D;
break;
}
}
}
if(count==C) return true;
else return false;
}
}
package 蓝桥杯;
import java.util.Arrays;
import java.util.Scanner;
public class VO二分_找一对数 {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int N=n;
int i=1,m;
int[] a=new int[n+1];
while(n!=0) {
a[i++]=reader.nextInt();
n--;
}
m=reader.nextInt();
Arrays.sort(a);
int x1=1,x2=N;
while(x1<x2&&a[x1]+a[x2]!=m) {
if(a[x1]+a[x2]>m)
x2--;
else x1++;
}
if(x1==x2)
System.out.println("No");
else
System.out.println(a[x1]+" "+a[x2]);
reader.close();
}
}
package 蓝桥杯;
public class VO二分_方程的根 {
public static void main(String[] args) {
System.out.printf("%.6f",BinaryTree());
}
static double f(double x) {
return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
static double EPS=1e-6;
static double BinaryTree() {
double x1=1.5,x2=2.4,root;
root=x1+(x2-x1)/2;
double t=f(root);
while(Math.abs(t)>=EPS) {
if(t>0) x1=root;
else x2=root;
root=x1+(x2-x1)/2;
t=f(root);
}
return root;
}
}