Cod sursa(job #2990249)

Utilizator mati.coldea@gmail.comMatei Coldea [email protected] Data 7 martie 2023 17:48:38
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 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; i++) {

		
		if ( i - st+1 > n) {
			break;
		}
		
		if (mini < a[i]) {
			mini= a[i];
			stmini = i;
			sfmini = i;
		}
		//mini = min(mini, act);

		if (sumaact < 0) {
			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();
}