Cod sursa(job #42760)

Utilizator ciprifilipasFilipas Ciprian ciprifilipas Data 29 martie 2007 15:03:50
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
/*
Nume: Cipri Filipas
Problema: Secventa infoarena
*/

#include <stdio.h>
#include <deque>
#include <vector>

using namespace std;

void Read();
void Write();
void Solve();
int minim(int st, int dr);

vector<int> a;
deque<int> q, sol;
int n, k, p;

FILE* fout = fopen("secventa.out", "wt");

int main()
{
    Read();
    Solve();
    Write();
    
    return 0;
}

void Read()    
{
    FILE* fin =  fopen("secventa.in", "rt");
    
    fscanf(fin, "%d %d", &n, &k);
    //q.resize(k+1);
    sol.resize(k+1);
    a.resize(n+1);
    for(int i = 0; i < n; i++)
        fscanf(fin, "%d", &a[i]);
    fclose(fin);
}

void Solve()
{
    for(int i = 0; i < k; i++)
        q.push_back(a[i]);
    sol = q;
    p = minim(0, k-1);
    for(int i = 1; i < n; i++)
    {
        if(i+k-1 < n)
        {
            q.pop_front();
            q.push_back(a[i+k-1]);
            if(p < minim(i, i+k-1)) 
            {
                sol = q;
            }
        }
    }    
}            

void Write()    
{
    for(int i = 0; i < k; i++)
        fprintf(fout, "%d ", sol[i]);

    fclose(fout);
    
}    
    
int minim(int st, int dr)
{
    int minim = 10000000;
    for(int i = st; i <= dr; i++)
    {
        if(a[i] < minim) minim = a[i];
    }    
    return minim;
}