Pagini recente » Cod sursa (job #620430) | Cod sursa (job #2204137) | Cod sursa (job #612532) | Cod sursa (job #495372) | Cod sursa (job #3192100)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
struct answer {
long long value = LLONG_MIN;
int pivot = 0;
int length = 0;
} ans;
int main() {
int n;
fin >> n;
vector<int> v(n+1);
for (int i = 1; i <= n; i++) {
int type;
fin >> v[i];
fin >> type;
if (!type) {
v[i]*=-1;
}
}
int pivot = 1;
int length = 1;
int s = v[1];
if (s > ans.value) {
ans = {s,pivot,length};
} else if(s == ans.value) {
if(pivot < ans.pivot) {
ans = {s,pivot,length};
} else if (pivot == ans.pivot
&& length < ans.length) {
ans = {s,pivot,length};
}
}
for (int i = 2; i <= n; i++) {
if (v[i] + s >= v[i]) {
length++;
s+=v[i];
} else {
length = 1;
pivot = i;
s = v[i];
}
if (s > ans.value) {
ans = {s,pivot,length};
} else if(s == ans.value) {
if(pivot < ans.pivot) {
ans = {s,pivot,length};
} else if (pivot == ans.pivot
&& length < ans.length) {
ans = {s,pivot,length};
}
}
}
for (int i = 1; pivot > i; i++) {
if (v[i] + s >= v[i]) {
length++;
s+=v[i];
} else {
break;
}
if (s > ans.value) {
ans = {s,pivot,length};
} else if(s == ans.value) {
if(pivot < ans.pivot) {
ans = {s,pivot,length};
} else if (pivot == ans.pivot
&& length < ans.length) {
ans = {s,pivot,length};
}
}
}
fout << ans.value << ' ' << ans.pivot << ' ' << ans.length;
return 0;
}