Pagini recente » Cod sursa (job #115839) | Cod sursa (job #503060) | Cod sursa (job #3183552) | Cod sursa (job #2193684) | Cod sursa (job #503690)
Cod sursa(job #503690)
#include <fstream>
using namespace std;
ifstream in ("buline.in");
ofstream out ("buline.out");
const int N = 1 << 19;
int n, v[N], sumatut;
void sminima (int& smin, int& stmin, int& drmin) {
int sc = v[1], st = 1;
for (int i = 2; i <= n; ++i) {
if (sc > 0) {
sc = v[i];
st = i;
}
if (sc < smin) {
smin = sc;
stmin = st;
drmin = i;
}
}
}
void smaxima (int& smax, int& stmax, int& drmax) {
int sc = v[1], st = 1;
for (int i = 2; i <= n; ++i) {
if (sc < 0) {
sc = v[i];
st = i;
}
if (sc > smax) {
smax = sc;
stmax = st;
drmax = i;
}
}
}
void citire () {
in >> n;
for (int i = 1, x; i <= n; ++i) {
in >> v[i] >> x;
v[i] = !x ? -v[i] : v[i];
v[n + i] = v[i];
sumatut += v[i];
}
}
void afisare () {
int smin, smax, drmin, stmin, stmax, drmax;
sminima (smin, stmin, drmin);
smaxima (smax, stmax, drmax);
if (smax > sumatut - smin) {
out << smax << ' ' << stmax << ' ' << drmax - stmax + 1;
} else {
out << sumatut - smin << ' ' << drmin + 1 << ' ' << n - drmin + stmin - 1;
}
}
int main () {
citire ();
afisare ();
return 0;
}