test

/*
input
3 5
8 4 3 1 10
output
13
 */
import java.util.Arrays;
import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String line1 = sc.nextLine();
        String line2 = sc.nextLine();
        int m = Integer.parseInt(line1.split(" ")[0]);
        int n = Integer.parseInt(line1.split(" ")[1]);
        String[] task = line2.split(" ");
        int[] arr = new int[n];
        int total = 0;
        for(int i=0;i<n;i++){
            arr[i]=Integer.parseInt(task[i]);
            total += arr[i];
        }
        //sorted
        Arrays.sort(arr);
        //default value is 0;

        if(m>n){
            System.out.println(arr[arr.length-1]);
        }else {
            //plan A
            // doing tasks
            int[] processingTask = new int[m];
            System.arraycopy(arr,0,processingTask,0,m);
            for(int i=m;i<n;i++){
                //find the min value of processingTask
                int min = processingTask[0];
                int index = 0;
                for(int j=1;j<m;j++){
                    if(min>processingTask[j]){
                        min = processingTask[j];
                        index = j;
                    }
                }
                processingTask[index] += arr[i];

            }
            //find max value and print
            int max = processingTask[0];
            for(int j=1;j<m;j++){
                if(max<processingTask[j]){
                    max = processingTask[j];
                }
            }
            //System.out.println(max);

            //plan B
            int time = 0;
            int asignment = 0;
            int[] processingTask2 = new int[m];
            while (total > 0) {
                for (int i = 0; i < m; i++) {
                    if (processingTask2[i] == 0 && asignment<n) {
                        processingTask2[i] = arr[asignment];
                        asignment++;
                    }
                    if(processingTask2[i] > 0) {
                        processingTask2[i] -= 1;
                        total -=1;
                    }
                }
                time ++;
            }
            System.out.println(time);
        }


    }
}


全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务