Cod sursa(job #2731326)

Utilizator VladPislaruPislaru Vlad Rares VladPislaru Data 27 martie 2021 17:50:23
Problema Secventa Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("secventa.in");
ofstream fout ("secventa.out");


multiset <int> S;
int n , k , a[500005];
char s[3800000];

int main()
{
    int i, p1 , p2 , b, bmax = 0,semn = 0 , x, j = 0;
    fin >> n >> k;
    fin.get();
    fin.getline(s,3800000);
    for (i = 0; s[i]; )
    {
        if (s[i] == ' ') i++;
        else if (s[i] == '-')
        {
            semn = 1;
            i++;
        }
        else if (isdigit(s[i]))
        {
            x = 0;
            while (isdigit(s[i]))
            {
                x = x * 10 + s[i] - '0';
                i++;
            }
            if (semn == 1)
                a[++j] = -x;
            else a[++j] = x;
            semn = 0;
        }
    }
    for (i = 1; i <= k; i++)
        S.insert(a[i] + 30000) ;
    p1 = 1;
    p2 = k;
    b = *S.begin();
    bmax = b;
    for (i = k + 1; i <= n; i++)
    {
        S.erase(a[i - k] + 30000);
        S.insert(a[i] + 30000);
        b = *S.begin();
        if (bmax < b)
        {
            p1 = i - k + 1;
            p2 = i;
            bmax = b;
        }
    }
    fout << p1 << " " << p2 << " " << bmax - 30000 << "\n";
    return 0;
}