Cod sursa(job #595786)

Utilizator palcuiealexAlex Palcuie palcuiealex Data 14 iunie 2011 01:46:35
Problema Secventa 2 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
/***************************************************
 * Author: Alexandru Palcuie
 * Country: Romania
 * Email: alex [dot] palcuie [at] gmail [dot] com
 * Website: http://palcu.blogspot.com/
 * Year: 2011
****************************************************/

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

typedef vector<int> VI;
typedef vector<pair<int,int> > VPI;
typedef pair<int,int> PII;
typedef long long LL;
typedef unsigned long long ULL;

//Constants
const int NMAX = 50000;

//Global Vars
int n, lgMin;
int parSums[NMAX], v[NMAX];

//Structs

//Solve Functions
inline void debug_vector(int* v){
        for(int i=0;i<n;++i)
                printf("%d ",v[i]);
        printf("\n");
}

int main()
{
        #ifndef ONLINE_JUDGE
        freopen("secv2.in","r",stdin);
        freopen("secv2.out","w",stdout);
        #endif

        scanf("%d%d",&n,&lgMin);

        int i,j;
        for(i=0; i<n; ++i){
                scanf("%d",&v[i]);
                parSums[i] = parSums[i-1] + v[i];
        }

        //debug_vector(parSums);

        int lmin = parSums[0], lmax = parSums[lgMin];
        int pmin = 1, pmax = lgMin+1;
        for(i=1, j=lgMin+1; j<n; ++i, ++j){
                if (parSums[i]<lmin) {
                        lmin=parSums[i];
                        pmin = i;
                }
                if (parSums[j]>lmax){
                        lmax=parSums[j];
                        pmax = j;
                }
        }

        printf("%d %d %d\n",pmin+2,pmax+1,lmax-lmin);

        return 0;
}