uva 1152 和为0的4个值

来源:互联网 发布:mysql 登录错误次数 编辑:程序博客网 时间:2024/06/06 10:54

这题留以记录学习。

#include <iostream>#include <algorithm>#include <cstdio>#define INF 4005*4005using namespace std;int st[INF];int main(){    int a[4005],b[4005],c[4005],d[4005];    int t,n,k=0,l;    cin >> t;    while(t--)    {        cin >> n;l=0;        for(int i=0;i<n;i++)            scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                st[l++]=a[i]+b[j];        sort(st,st+l);        int sum=0;        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                sum+=upper_bound(st,st+l,-c[i]-d[j])-lower_bound(st,st+l,-c[i]-d[j]);        if(k==0) cout << sum << endl;        else cout << endl << sum << endl;        k++;    }    return 0;}


学到了

sum+=upper_bound(st,st+l,-c[i]-d[j])-lower_bound(st,st+l,-c[i]-d[j]);

利用upper lower 确定这个数的存在与否且存在几个

0 0