您的位置:首页 > 其它

poj 3663 Costume Party

2013-07-23 10:24 323 查看
给定两个数n和s,n代表输入数的个数,s代表长度,找出n个数中有几对长度之和<=n,只需要一次排序,查找

具体代码:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
const int N = 20001;

int arr
;
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int n,s,ans;
int cas,sum,a,i;
while(cin>>n>>s){
cas = 0;
sum = 1;
for(i = 0; i < n;i++)
cin>>arr[i];
qsort(arr,n,sizeof(arr[0]),cmp);
for(i = n-1;i>=0;i--){
if(arr[i] + arr[i-1] <= s) break;
}

cas += (i * (i+1))/2;

for(int j = i +1;j < n;j++){
for(int k = 0;k <= i;k++){
if(arr[k] + arr[j] <= s) cas++;
else break;
}
}
cout<<cas<<endl;

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: