#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #define MAX 1000000 int main() { int T,N,a[MAX],sum,i,left,flag; scanf("%d",&T); while(T--) { flag=0; sum=0; left=0; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d",(a+i)); sum+=*(a+i); } for(i=0;i<N;i++) { sum=sum-*(a+i); if(left==sum) { flag=1; break; } left=left+*(a+i); } if(flag==1) printf("YES\n"); else printf("NO\n"); } return 0; }
C++ Implementation:
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int t; cin>>t; while(t--) { bool flag = false; int sum = 0; int left = 0; int n; cin>>n; int a[n]; for(int i = 0;i<n;i++) { cin>>a[i]; sum += a[i]; } for(int i=0;i<n;i++) { sum = sum - a[i]; if(left==sum) { flag = true; break; } left = left + a[i]; } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
Java Implementation:
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); while(t>0) { boolean flag = false; int sum = 0; int left = 0; int n = in.nextInt(); int a[] = new int[n]; for(int i=0;i<n;i++) { a[i] = in.nextInt(); sum = sum + a[i]; } for(int i=0;i<n;i++) { sum = sum - a[i]; if(left==sum) { flag = true; break; } left = left + a[i]; } if(flag) System.out.println("YES"); else System.out.println("NO"); t--; } } }
Python Implementation:
t = int(raw_input()) while t>0: flag=0 sm=0 left=0 n = int(raw_input()) lis = map(int,raw_input().split(' ')) sm = sum(lis) for i in range(n): sm = sm - lis[i] if left==sm: flag=1 break left = left + lis[i] if flag: print "YES" else: print "NO" t-=1