利用二分法

小易的英语软件

http://www.nowcoder.com/questionTerminal/f51e08c7642345fb96dd7b29792b0790

import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;

public class ScoreToPercent {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int n = scanner.nextInt();
            int[] scores = new int[n];
            for (int i=0;i<n;i++)
                scores[i]=scanner.nextInt();

            HashMap<Integer, Integer> map = new HashMap<>();
            int[] sort = Arrays.copyOfRange(scores, 0, scores.length);
            Arrays.sort(sort);
            for (int i=0;i<n;i++){
                int left=0;
                int right=n-1;
                while (left<=right){
                    int mid=left+(right-left)/2;
                    if (sort[mid]<=scores[i])
                        left=mid+1;
                    else{
                        right=mid-1;
                    }
                }
               // System.out.println("left:"+left);
                map.put(i,left-1);
            }
            int m = scanner.nextInt();
            for (int i=0;i<m;i++){
                double res = (100.0*map.get(scanner.nextInt() - 1))/ n;
                System.out.println(String.format("%.6f",res));
            }

        }
    }
}
全部评论

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务