Codeforces Round #613 (Div. 2) B. Just Eat It!(前缀和)
题意:
一个长为n的序列,是否存在与原序列不同的连续子序列,其元素之和大于等于原序列。
思路:
从前、后分别累加,若出现非正和,除此累加序列外的子序列元素之和一定大于等于原序列。
#include <bits/stdc++.h> using namespace std; typedef long long ll; bool solve(){ int n;cin>>n; int a[n];for(int &i:a) cin>>i; ll sum=0; for(int i=0;i<n;i++){ sum+=a[i]; if(sum<=0) return 0; } sum=0; for(int i=n-1;i>=0;i--){ sum+=a[i]; if(sum<=0) return 0; } return 1; } int main(){ int t;cin>>t; while(t--) cout<<(solve()?"YES":"NO")<<"\n"; return 0; }