编程题(2):京东-笔试题-2018实习招聘

来源:互联网 发布:开淘宝的心得体会 编辑:程序博客网 时间:2024/05/17 19:18
拍卖(京东2017实习生招聘真题)题目描述

公司最近新研发了一种产品,共生产了n件。有m个客户想购买此产品,第i个客户出价Vi元。为了确保公平,公司决定要以一个固定的价格

出售产品。每一个出价不低于要价的客户将会得到产品,余下的将会被拒绝购买。请你找出能让公司利润最大化的售价。

输入

输入第一行二个整数n(1<=n<=1000),m(1<=m<=1000),分别表示产品数和客户数。

接下来第二行m个整数Vi(1<=Vi<=1000000),分别表示第i个客户的出价。

样例输入

5 4

2 8 10 7

输出

输出一行一个整数,代表能够让公司利润最大化的售价。

样例输出

7

时间限制C/C++语言:1000MS其它语言:3000MS
内存限制C/C++语言:65536KB其它语言:589824KB
package cn.com.jingdong;import java.util.Scanner;public class Main4 {public static void main(String[] args) {        Scanner sc =new Scanner(System.in);        int m = sc.nextInt();        int n = sc.nextInt();        sc.nextLine();        int[] v = new int[n];        for(int i = 0;i<n;i++){        v[i] = sc.nextInt();        }        //对V[i]进行排序从小到大        for(int i =0;i<n-1;i++){        for(int j=0;j<n-1-i;j++){        if(v[j]>v[j+1]){        int temp = v[j];        v[j] = v[j+1];        v[j+1] = temp;        }        }        }        int max = 0;        int index = 0;        int low = Math.max(0,n-m);//注意:当出价客户个数n>商品数m时,只能选择价格数组中的后n个数,否则(n-i)会大于m,并不是卖出的商品数        for(int i = low;i<n;i++){        int temp = v[i]*(n-i);        if(temp>=max){    max = temp;    index = v[i];    }        }        System.out.println(index);}}

0 0
原创粉丝点击