POJ_2785 __4 Values whose Sum is 0_打表+二分查找

// POJ_2785  __4 Values whose Sum is 0
//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define mem( a,v ) memset( a,v,sizeof( a ) )	// cstring

const int N=4444;
int a[N],b[N],c[N],d[N];
int n;

vector<int> v;

void table()
{
    int x,i,j;
    
    for( i=0;i<n;i++ )
    	for( j=0;j<n;j++ )		// i j
    	{
    		x=c[i]+d[j];
        	v.push_back(x);
		}
    sort( v.begin(),v.end() );
}

void init() { mem( a,0 ); mem( b,0 ); mem( c,0 ); mem( d,0 ); v.clear(); }

int main()
{
    int i,j,t,ans;

    while( cin>>n )
    {
        init();
        for( i=0;i<n;i++ ) cin>>a[i]>>b[i]>>c[i]>>d[i];

        table();
        for( ans=i=0;i<n;i++ )
            for( j=0;j<n;j++ )
            {
                t=-( a[i]+b[j] );
                ans+=upper_bound( v.begin(),v.end(),t )-lower_bound( v.begin(),v.end(),t );
            }
        cout<<ans<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/123695956
今日推荐