• 喵哈哈村的排队


    喵哈哈村的排队

    发布时间: 2017年2月26日 16:13   最后更新: 2017年2月26日 16:14   时间限制: 1000ms   内存限制: 128M

    有一堆喵哈哈村的村民们在排队,他们从队列的尾部开始标号,标号为1的村民站在最后面,标号为n的村民站在队列的最前面,而且每个村民都拥有一个智商值a[i]。

    这些村民有时候会觉得不开心,因为他们觉得凭什么一个智商比他低的人,可以站在他的前面!现在对于每个村民,他们都想知道,在他前面,智商比他低,离他最远的距离是多少。

    第一行n,表示有n只咸鱼
    第二行n个整数,表示每个村民的智商值a[i].
    n<=200000 1<=a[i]<=1000000000

    对于每个村民,输出智商比他的,且离他最远的距离是多少,如果没有输出-1

    复制
    6
    10 8 5 3 50 45
    2 1 0 -1 0 -1
    注意注意,多组输入把我害惨了,今天就吸取教训了
     1 #include <iostream>
     2 #include <string.h>
     3 #include <stdio.h>
     4 #include <algorithm>
     5 #define N 200005
     6 #define mem(a) memset(a,0,sizeof(a))
     7 using namespace std;
     8 int n[N],k[N];
     9 int m;
    10 int BinarySearch(int begin,int end,int x){
    11     int mid,pos=0;
    12     int t=begin;
    13     if(begin==end)
    14         return -1;
    15     while(begin<end){
    16         mid=(begin+end)/2;
    17         if(k[mid]<x){
    18             begin=mid+1;
    19             pos=begin;
    20         }else {
    21             end=mid;
    22             pos=end;
    23         }
    24     }
    25     if(k[pos]==x&&k[pos-1]<x&&pos-1>=t)
    26         return pos-1;
    27     if(k[pos]==x)
    28         return -1;
    29     if(k[pos]<x)
    30         return pos;
    31     return pos-1;
    32 }
    33 int main(){
    34     while(~scanf("%d",&m)){
    35         mem(n);
    36         mem(k);
    37         for(int i=0;i<m;i++){
    38             scanf("%d",&n[i]);
    39         }
    40         k[m-1]=n[m-1];
    41         for(int i=m-2;i>=0;i--){
    42             k[i]=min(k[i+1],n[i]);
    43         }
    44 
    45         for(int i=0;i<m;i++){
    46             int ans=BinarySearch( i,m-1,n[i]);
    47             if(i)
    48                 printf(" ");
    49             if(ans==-1)
    50                 printf("-1");
    51             else
    52                 printf("%d",ans-i-1);
    53         }
    54         printf("
    ");
    55     }
    56 
    57     return 0;
    58 }
     
  • 相关阅读:
    iou与giou对比
    Linux学习第一天 vim
    奖励加分申请
    人月神话阅读笔记3
    5.27
    5.26
    5.25
    5.23
    5.22
    5.21
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/7523323.html
Copyright © 2020-2023  润新知