Cod sursa(job #2990271)

Utilizator mati.coldea@gmail.comMatei Coldea [email protected] Data 7 martie 2023 18:10:07
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
#define INF 100000
int a[400005];
int main() {

	ios_base::sync_with_stdio(false);
	fin.tie(NULL);

	int n;
	fin >> n;

	for (int i = 1; i <= n; i++) {
		int act, tip;
		fin >> act >> tip;
		if (tip == 0) {
			a[i] = act * -1;
		}
		else {
			a[i] = act;
		}
	}

	for (int i = 1; i <= n; i++) {
		a[n + i] = a[i];

	}





	long long suma = -1;
	long long sumaact = -1;
	int stact = 0;
	int st = -1;
	int sf = 0;
	int mini = -INF;
	int stmini;
	int sfmini;

	for (int i = 1; i <= 2 * n-1; i++) {


		

		if (mini < a[i]) {
			mini = a[i];
			stmini = i;
			sfmini = i;
		}
		

		if (sumaact < 0|| i - stact + 1 > n) {
			stact = i;
			sumaact = 0;
		}
		sumaact += a[i];

		if (sumaact > suma) {
			st = stact;
			sf = i;
			//cout << a[sf]<<'\n';
			suma = sumaact;
		}

	}

	if (st == -1) {
		fout << mini << ' ' << stmini << ' ' << 1 << '\n';
	}
	else {
		fout << suma << ' ' << st << ' ' << sf - st + 1 << '\n';

	}



	fin.close();
	fout.close();
}