Cod sursa(job #2445314)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 3 august 2019 15:17:22
Problema Secventa Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>

using namespace std;

const int NMAX = 500010;

map<int, int> m;
int v[NMAX];
int n, k;

int main()
{
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);

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

    int startpos = 0;
    int maxmin = -3000000;

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

        ++m[v[i]];
    }

    for(int i = k - 1; i < n; ++i)
    {
        scanf("%d", &v[i]);
        ++m[v[i]];

        int newmin = m.begin()->first;

        if(newmin > maxmin)
        {
            maxmin = newmin;
            startpos = i - k + 2;
        }

        if(m[v[i - k + 1]] == 1)
            m.erase(v[i - k + 1]);
        else
            --m[v[i - k + 1]];
    }

    printf("%d %d %d", startpos, startpos + k - 1, maxmin);

    return 0;
}