Cod sursa(job #2899890)

Utilizator disinfoion ion disinfo Data 9 mai 2022 16:11:24
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int s[3]; 
int s_new[3];
ifstream fin;

void read(int &x){
	
	fin >> x;
	
}

int main(){
	ofstream fout;

	fin.open("ssm.in");
	fout.open("ssm.out"); 
	int n, x;

	srand(time(0));
	

	fin >> n;
	read(x);

	s[0] = s[1] = x;
	s[2] = 1;
	pair<int,int> ans = {1, 1};

	for(int i=2; i <= n; ++i){
		read(x);

		if(s[1] > 0){
			s_new[1] = x + s[1];
			s_new[2] = s[2];
		}
		else{
			s_new[1] = x;
			s_new[2] = i;
		}

		if(s_new[1] > s[0]){
			s_new[0] = s_new[1];
			ans = {s_new[2], i};
		}
		else{
			s_new[0] = s[0];
		}

		for(int j=0; j < 3; ++j)
			s[j] = s_new[j];

		//cout << "\nstate" << s[0] << " " << s[1] << " " << s[2] << " " << "\n";


	}

	fout << s[0] << "\n";
	fout << ans.first << "\n" << ans.second;
}