Cod sursa(job #1774061)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 8 octombrie 2016 15:02:44
Problema Secventa 2 Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <stdio.h>
#include <ctype.h>
#define minim(a,b) a>b? b:a
#define BUF_SIZE 131072
FILE *fin,*fout;
int min[50000],pos=BUF_SIZE,stot,sc;
char buf[BUF_SIZE];
inline char getch()
{
    if(pos==BUF_SIZE)
        fread(buf,BUF_SIZE,1,fin),pos=0;
    return buf[pos++];
}
inline int getnr()
{
    int semn=1,x=0;
    char ch=getch();
    while(!isdigit(ch) && ch!='-')
        ch=getch();
    if(ch=='-')
        semn*=-1,ch=getch();
    while(isdigit(ch))
    {
        x=x*10+ch-'0';
        ch=getch();
    }
    return x*semn;
}
int main()
{
    fin=fopen("secventa2.in","r");
    fout=fopen("secventa2.out","w");
    int n,dr,st,stmax,drmax,max,x,k;
    n=getnr();k=getnr();
    st=dr=1;
    while(dr<=k)
    {
        x=getnr();
        stot+=x;
        min[dr]=minim(min[dr-1],x);
        dr++;
    }
    sc=max=stot;
    while(dr<=n)
    {
        x=getnr();
        stot+=x;
        min[dr]=minim(min[dr-1],x);
        if(min[dr-k]!=min[dr-k-1])
        {
            st=dr-k+1;
            sc-=min[dr-k];
        }
        sc+=x;
        if(sc>max)
        {
            max=sc;
            stmax=st;
            drmax=dr;
        }
        dr++;
    }
    fprintf(fout,"%d %d %d",stmax,drmax,max);
    fclose(fin);
    fclose(fout);
    return 0;
}