poj 3663 Costume Party 二分

来源:互联网 发布:2017中超守门员数据 编辑:程序博客网 时间:2024/06/05 01:02

简单二分

二分的写法还是比较多的

#include
#include
#include
#include
using namespace std;
const int maxn=222222;
int a[maxn];
int ans;
int n,s;
int work(int tmp)
{
    intst=1,end=n,mid;
   while(st
    {
       mid=(st+end+1)>>1;
       if(a[mid]+tmp>s)
       end=mid-1;
       else
       st=mid;
    }
   return(st);
}

int main()
{
    scanf("%d%d",&n,&s);
    for(inti=1;i<=n;i++)
   scanf("%d",&a[i]);
   sort(a+1,a+n+1);
    ans=0;
    for(inti=1;i<=n;i++)
    {
       int tmp=work(a[i]);
       if(tmp>i)
       ans+=tmp-i;
//       printf("%d\n",ans);
    }
   printf("%d\n",ans);
    return0;
}

原创粉丝点击