zoukankan      html  css  js  c++  java
  • F

    Problem description

    You have a Petri dish with bacteria and you are preparing to dive into the harsh micro-world. But, unfortunately, you don't have any microscope nearby, so you can't watch them.You know that you have n bacteria in the Petri dish and size of the i-th bacteria is ai. Also you know intergalactic positive integer constant K.

    The i-th bacteria can swallow the j-th bacteria if and only if ai>aj and aiaj+K. The j-th bacteria disappear, but the i-th bacteria doesn't change its size. The bacteria can perform multiple swallows. On each swallow operation any bacteria i can swallow any bacteria j if ai>aj and aiaj+K. The swallow operations go one after another.For example, the sequence of bacteria sizes a=[101,53,42,102,101,55,54] and K=1. The one of possible sequences of swallows is: [101,53,42,102,101,55,54] [101,53,42,102,55,54] [101,42,102,55,54] [42,102,55,54]→ [42,102,55]. In total there are 33 bacteria remained in the Petri dish.

    Since you don't have a microscope, you can only guess, what the minimal possible number of bacteria can remain in your Petri dish when you finally will find any microscope.

    Input

    The first line contains two space separated positive integers n and K (1n210^51K10^6) — number of bacteria and intergalactic constant K.

    The second line contains n space separated integers a1,a2,,an (1ai10^6) — sizes of bacteria you have.

    Output

    Print the only integer — minimal possible number of bacteria can remain.

    Examples

    Input

    7 1
    101 53 42 102 101 55 54

    Output

    3

    Input

    6 5
    20 15 10 15 20 25

    Output

    1

    Input

    7 1000000
    1 1 1 1 1 1 1

    Output

    7

    Note

    The first example is clarified in the problem statement.In the second example an optimal possible sequence of swallows is: [20,15,10,15,20,25]  [20,15,10,15,25] [20,15,10,25] [20,15,25]  [20,25] [25].In the third example no bacteria can swallow any other bacteria.

    解题思路:题目的意思就是只要ai>aj且ai-aj<=K,aj就可以被吞噬掉(标记为-1)。做法:先排序;然后用两个变量模拟指针i,j指向当前元素的位置,初始值都为0。如果a[j]-a[i]==0,j后移一位,即j++;如果a[j]-a[i]>k,i就往后移一位,即i++;否则(a[j]-a[i]<=K)将a[i]标记为-1,然后i++;最后统计数组a中值不是-1的个数,即为最小剩余细菌的个数,水过。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=2e5+5;
     4 int n,k,i,j,m,tmp,a[maxn];
     5 int main(){
     6     cin>>n>>k;m=i=j=0;
     7     for(int p=0;p<n;++p)cin>>a[p];
     8     sort(a,a+n);
     9     while(i<n&&j<n){
    10         tmp=a[j]-a[i];
    11         if(tmp==0)j++;
    12         else if(tmp>k)i++;
    13         else{a[i]=-1;i++;}
    14     }
    15     for(int p=0;p<n;++p)
    16         if(a[p]!=-1)m++;
    17     cout<<m<<endl;
    18     return 0;
    19 }
  • 相关阅读:
    Azure 中 Linux 虚拟机的大小
    排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
    如何在 Azure 中的 Linux 经典虚拟机上设置终结点
    针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除
    Linux 内核超时导致虚拟机无法正常启动
    Java并发编程(十三)同步容器类
    可以开发着玩一下的web项目
    org.tmatesoft.svn.core.SVNCancelException: svn: E200015: authentication canc
    FastDFS单机搭建以及java客户端Demo
    做前端(单纯页面和js)遇到的问题辑录(一)
  • 原文地址:https://www.cnblogs.com/acgoto/p/9200862.html
Copyright © 2011-2022 走看看