只A了最后两个,悬赏一关注求调(java的)
查看原帖
只A了最后两个,悬赏一关注求调(java的)
1096827
AC_or_suicide楼主2023/11/22 23:28
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Set;

public class Main {
	static int max = 0;
	static int min = 1;
	static int arr[] = new int[(int)1e4 + 10];
	static int n;
    static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    public static void main(String[] args) throws IOException {
    	n = nextInt();
    	for(int i = 1;i <= n;i++) {
    		int number1 = nextInt();
    		int number2 = nextInt();
    		method(number1, number2);
    	}
    }
    
    public static void method(int n,int number) {
    	if(n == 1) {
    		int i = min;
    		int j = max;
    		while(i <= j) {
    			int mid = (i + j) >>> 1;
                if(arr[mid] < number) {
                	i = mid + 1;
                }
                if(arr[mid] >= number) {
                	j = mid - 1;
                }
    		}
    		if(arr[i] == number) {
    			System.out.println(i);
    		}else {
    			System.out.println(i + 1);
    		}
    	}else if(n == 2) {
    		System.out.println(arr[number]);
    	}else if(n == 3) {
    		int i = min;
    		int j = max;
    		while(i <= j) {
    			int mid = (i + j)>>>1;
                if(arr[mid] < number) {
                	i = mid + 1;
                }
                if(arr[mid] >= number) {
                	j = mid - 1;
                }
    		}
    		if(arr[j] == number && j >= 2) {
    			System.out.println(arr[j - 1]);
    		}else if(arr[j] < number && j != min - 1) {
    			System.out.println(arr[j]);
    		}else {
    			System.out.println(-2147483647);
    		}
    	}else if(n == 4) {
    		int i = min;
    		int j = max;
    		while(i <= j) {
    			int mid = (i + j)>>>1;
                if(arr[mid] <= number) {
                	i = mid + 1;
                }
                if(arr[mid] > number) {
                	j = mid - 1;
                }
    		}
    		if(arr[i] == number && i < max) {
    			System.out.println(arr[i + 1]);
    		}else if(arr[i] > number && i != max + 1) {
    			System.out.println(arr[i]);
    		}else{
    			System.out.println(2147483647);
    		}
    	}else {
    		max++;
    		if(arr[min] == 0) {
    			arr[min] = number;
    			return;
    		}
    		int val = number;
    		for(int i = min;i <= max;i++) {
    			if(arr[i] == 0) {
    				arr[i] = val;
    			}
    			if(val < arr[i]) {
    				int count = val;
    				val = arr[i];
    				arr[i] = count;
    			}
    		}
    	}
    }

    public static int nextInt() throws IOException {
        in.nextToken();
        return (int) in.nval;
    }
}


2023/11/22 23:28
加载中...