Cod sursa(job #1448744)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 7 iunie 2015 21:05:09
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
//0014
#include <cstdio>
#include <deque>

using namespace std;

void f(deque<int> m, int& minim, int& poz) {
    minim = 30001;
    for (int i = 0; i < m.size(); i++) {
        if (m[i] < minim) {
            minim = m[i];
            poz = i + 1;
        }
    }
}

int main() {
    FILE* fi = fopen("secventa.in", "rt");
    FILE* fo = fopen("secventa.out", "wt");

    int va = -30001, vp;
    deque<int> m;
    int n, k;
    fscanf(fi, "%d%d", &n, &k);

    for (int i = 1; i <= k; i++) {
        int el;
        fscanf(fi, "%d", &el);
        m.push_back(el);
    }

    int minim, poz;
    f(m, minim, poz);
    if (minim > va) {
        va = minim;
        vp = poz;
    }

    for (int i = k + 1; i <= n; i++) {
        m.pop_front();
        int el;
        fscanf(fi, "%d", &el);
        m.push_back(el);
        poz--;
        if (el <= minim) {
            minim = el;
            poz = k;
        }
        if (poz == 0) {
            f(m, minim, poz);
            if (minim > va) {
                va = minim;
                vp = poz + i - k;
            }
        }
    }

    fprintf(fo, "%d %d %d", vp, vp + k - 1, va);

    return 0;
}