题目描述
样例
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
java 代码
import java.util.*;
public class Main {
static int n;
static int M=100010;
static int[][]a=new int[M][4];
static int[]dx1=new int[M];
static int[]dx2=new int[M];
static int[]dx3=new int[M];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
for(int j=1;j<=3;j++){
for(int i=1;i<=n;i++){
a[i][j]=sc.nextInt();
}
}
for(int i=1;i<=n;i++){
dx1[i]=a[i][1]-a[i][2]-a[i][3];
dx2[i]=a[i][2]-a[i][1]-a[i][3];
dx3[i]=a[i][3]-a[i][2]-a[i][1];
}
Arrays.sort(dx1,1,n+1);
Arrays.sort(dx2,1,n+1);
Arrays.sort(dx3,1,n+1);
long sum=0;
int ans=0;
int res=0;
/* for(int i=n;i>=1;i--){
System.out.print(dx2[i]+" ");
}*/
//System.out.println();
for(int i=n;i>=1;i--){
if(sum+dx1[i]>0){
res++;
sum+=dx1[i];
}else
break;
}
ans=Math.max(ans,res);
res=0;
sum=0;
for(int i=n;i>=1;i--){
if(sum+dx2[i]>0){
res++;
sum+=dx2[i];
}else
break;
}
ans=Math.max(ans,res);
res=0;
sum=0;
for(int i=n;i>=1;i--){
if(sum+dx3[i]>0){
res++;
sum+=dx3[i];
}else
break;
}
ans=Math.max(ans,res);
if(ans>0)
System.out.println(ans);
else
System.out.println(-1);
}
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla