您的位置:首页 > 产品设计 > UI/UE

poj 2785 4 Values whose Sum is 0

2015-06-04 12:30 429 查看
这道题,让我明白了lower_bound(),upper_bound()的威力啊

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

int a[4003];
int b[4003];
int c[4003];
int d[4003];
int e[16000003];
int main()
{
	int n;
	cin>>n;
	int i;
	int j;
	for(i=0;i<n;i++)
		cin>>a[i]>>b[i]>>c[i]>>d[i];
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
			e[i*n+j]=a[i]+b[j];	
	}
	sort(e,e+n*n);
	int   res;
	int sum=0;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			res=c[i]+d[j];
			sum+=upper_bound(e,e+n*n,-res)-lower_bound(e,e+n*n,-res);//返回个数,中间有几个相同的值也包含了,好巧妙
		}
	cout<<sum<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: