NKSEQ - Dãy số

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <iostream>
using namespace std;

int n;
int a[100010], s[100010], minl[100010], minr[100010];

int main() {
	scanf("%d", &n);
	for(int i=0;i<n;++i) {
		scanf("%d", a+i);
		s[i] = a[i] + (i==0?0:s[i-1]);
		minl[i] = s[i];
		if(i>0) minl[i] <?= minl[i-1];
	}
	for(int i=n-1;i>=0;--i) {
		minr[i] = s[i];
		if(i+1<n) minr[i] <?= minr[i+1];
	}
	int res = 0;
	for(int i=0;i<n;++i) {
		bool ok = true;
		if(minr[i]-(i==0?0:s[i-1])<=0) ok = false;
		int seg = s[n-1] - (i==0?0:s[i-1]);
		if(i>0 && seg+minl[i-1]<=0) ok = false;
		res += ok;
	}
	cout << res << endl;
	return 0;
}

Download