Cod sursa(job #382910)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 14 ianuarie 2010 23:33:32
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <cstdio>
#include <vector>
#define NMAX 50010
#define pb push_back
using namespace std;

int N, K, v[NMAX], i, l, r, smax;

void read(void)
{
	freopen("secv2.in", "r", stdin);
	scanf("%d %d", &N, &K);
	
	for(i = 1; i <= N; ++i)
		scanf("%d", &v[i]);
	
		
	
	fclose(stdin);
}

void calc(void)
{
	int s = 0, m = INT_MIN;
	
	for(i = 1; i <= N; ++i)
	{
		s += v[i];
		if(s > m)
		{
			m = s;
			r = i;
		}
	}
	
	s = 0;
	m = INT_MIN;
	for(i = r; i >= 1; --i)
	{
		s += v[i];
		if(s > m)
		{
			m = s;
			l = i;
		}
	}
	for(i = l; i <= r; ++i)
		smax += v[i];
}
void solve(void)
{
	if(K != N)
		calc();
	else
	{
		for(i = 1; i <= N; ++i)
			smax += v[i];
		l = 1;
		r = N;
	}
}
void print(void)
{
	freopen("secv2.out", "w", stdout);
	printf("%d %d %d", l, r, smax);
	
	fclose(stdout);
}
int main(void)
{
	read();
	solve();
	print();
	
	return 0;
}