码迷,mamicode.com
首页 > 其他好文 > 详细

[51nod1267]4个数和为0(预处理+双指针)

时间:2017-11-04 23:42:40      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:序列   int   using   指针   个数   while   turn   space   题意   

题意:判断能否从序列中找出4个数的和为0。

解题关键:n^2预处理任意两个数的和,sort一下,双指针进行判定。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1002];
struct node{
    int x,y,sum;
}arr[1000002];
bool cmp(node &a,node &b){
    return a.sum<b.sum;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    int k=0;
    for(int i=0;i<n;i++) for(int j=0;j<i;j++){
        arr[k].x=i;
        arr[k].y=j;
        arr[k].sum=a[i]+a[j];
        k++;
    }
    sort(arr,arr+k,cmp);
    int l=0,r=k-1;
    bool flag=false;
    while(l<r){
        if(arr[l].sum+arr[r].sum==0&&arr[l].x!=arr[r].x&&arr[l].x!=arr[r].y&&arr[l].y!=arr[r].x&&arr[l].y!=arr[r].y){
            flag=true;
            break;
        }
        else if(arr[l].sum+arr[r].sum<0){
            l++;
        }else{
            r--;
        }
    }
    if(flag) printf("Yes\n");
    else printf("No\n");
    return 0;
} 

 

[51nod1267]4个数和为0(预处理+双指针)

标签:序列   int   using   指针   个数   while   turn   space   题意   

原文地址:http://www.cnblogs.com/elpsycongroo/p/7784871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!