Professional Documents
Culture Documents
vị trí tốt
vị trí tốt
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(0);
int n; cin >> n;
vector<int> s(n+1);
s[0] = 0;
for (int i=1; i<=n; i++) {
cin >> s[i];
s[i] += s[i-1];
}
vector<bool> f(n+1);
for (int i=n, smin = s[n]; i>0; i--) {
f[i] = s[i-1] < smin;
smin = min(smin, s[i-1]);
}
vector<bool> g(n+1);
for (int i=1, smin = s[n]; i<=n; i++) {
g[i] = s[i-1] < smin;
smin = min(smin, s[i] + s[n]);
}
int count = 0;
for (int i=1; i<=n; i++) count += f[i] && g[i];
cout << count;
return 0;
}
Vị trí j được gọi là vị trí tốt, nếu các điều kiện sau đây được thỏa mãn:
aj > 0
aj + aj+1 > 0
....
aj + aj+1 + ... + an > 0
aj + aj+1 + ... + an + a1 > 0
...
aj + aj+1 + ... + an + a1 + a2 + ... + aj─2 > 0
aj + aj+1 + ... + an + a1 + a2 + ... + aj─2 + aj─1 > 0
Yêu cầu: hãy đếm số vị trí tốt.
Dữ liệu vào
Dòng đầu tiên chứa số nguyên n.
Dòng thứ 2 chứa dãy số a1, a2,...,an.
Kết qủa
In ra 1 số nguyên duy nhất là số vị trí tốt.
Ví dụ
Dữ liệu mẫu
5
0 1 -2 10 3
Kết qủa
2