1099094_ac_6217ms_49012k.cpp

来自「北京大学ACM 2785 对初学者有很大帮助!」· C++ 代码 · 共 35 行

CPP
35
字号
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int a[4001],b[4001],c[4001],d[4001],n1[16000001],n2[16000001];
int num,n;
int cnt;
int main()
{
    int i,j,p1,p2,c1,c2;
    scanf("%d",&n);
    for(i=0;i<n;i++)scanf("%d %d %d %d",&a[i],&b[i],&c[i],&d[i]);
    num=0;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            n1[num]=a[i]+b[j],n2[num]=c[i]+d[j],num++;
    sort(n1,n1+num);
    sort(n2,n2+num);
    p1=0;p2=num-1;cnt=0;
    while(p1<num&&p2>=0)
    {
        if(n1[p1]+n2[p2]==0)
        {
            c1=c2=1;
            while(p1+1<num&&n1[p1]==n1[p1+1])p1++,c1++;
            while(p2-1>=0&&n2[p2]==n2[p2-1])p2--,c2++;
            cnt+=c1*c2;
            p1++;p2--;
        }    
        else if(n1[p1]+n2[p2]>0)p2--;   
        else p1++; 
    }     
    printf("%d\n",cnt);
    return 0;
}    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?