Cod sursa(job #1320266)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 17 ianuarie 2015 19:39:16
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;

using namespace std;

int a[6000001], istart, ifinish;

long long trav(int a[], int n)
{
	long long smax = -1LL<<60;
	long long sum = 0;
	for(int i = 0; i < n; i++)
	{
		if(sum < 0 && a[i] > sum) {
			sum = 0;
			istart = i;
		}

		sum += a[i];

		if(sum > smax) {
			ifinish = i;			
			smax = sum;
		}		
	}
	return smax;
}


int main () {
	FILE *in = fopen("ssm.in", "r");
	FILE *out = fopen("ssm.out", "w");
	int n;

	fscanf(in, "%d", &n);
	

	for(int i = 0; i < n; i++) {		
		fscanf(in, "%d", a + i);
	}

	long long result = trav(a, n);

	fprintf(out, "%lld %d %d", result, istart + 1, ifinish + 1);
	

	return 0;
}