poj 2785 2 점 문제 4 Values whose Sum is 0
Description
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a + b + c + d = 0 . In the following, we assume that all lists have the same size n .
Input
The first line of the input file contains the size of the lists n (this value can be as large as 4000). We then have n lines containing four integer values (with absolute value as large as 2
28 ) that belong respectively to A, B, C and D .
Output
For each input file, your program has to write the number quadruplets whose sum is zero.
Sample Input
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
Sample Output
5
Hint
Sample Explanation: Indeed, the sum of the five following quadruplets is zero: (-45, -27, 42, 30), (26, 30, -10, -46), (-32, 22, 56, -46),(-32, 30, -75, 77), (-32, -54, 56, 30).
각 열 에서 각각 하나의 수 를 취하 여 몇 조 의 네 개의 수 를 합 쳐 0 이 되 는 지 구하 라.
먼저 앞의 두 열,뒤의 두 열의 모든 합 을 구 한 다음 에 뒤의 두 열의 합 을 정렬 하고 뒤의 두 열 을 2 분 으로 나 누 어 몇 가지 상황 이 있 는 지 찾 아 보면 됩 니 다!
매 거 는 시간 을 초과 할 것 이다.
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int a[4002][4],sum1[16000002],sum2[16000002];
int main()
{
int n,mid;
while(~scanf("%d",&n))
{
for(int i=0; i<n; i++)
{
scanf("%d%d%d%d",&a[i][0],&a[i][1], &a[i][2],&a[i][3]);
}
int k=0;
int m=0;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
sum1[k++]=a[i][0]+a[j][1];
sum2[m++]=a[i][2]+a[j][3];
}
sort(sum2,sum2+k);
int cnt=0;
for(int i=0; i<k; i++)
{
int left=0;
int right=k-1;
while(left<=right)
{
mid=(left+right)/2;
if(sum1[i]+sum2[mid]==0)
{
cnt++;
for(int j=mid+1;j<k;j++)
{
if(sum1[i]+sum2[j]!=0)
break;
else
cnt++;
}
for(int j=mid-1;j>=0;j--)
{
if(sum1[i]+sum2[j]!=0)
break;
else
cnt++;
}
break;
}
if(sum1[i]+sum2[mid]<0)
left=mid+1;
else
right=mid-1;
}
}
printf("%d
",cnt);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.