Cod sursa(job #43554)

Utilizator ciprifilipasFilipas Ciprian ciprifilipas Data 30 martie 2007 11:47:30
Problema Secventa Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <stdio.h>
#include <deque>
#include <vector>

using namespace std;

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

FILE* fout = fopen("secventa.out", "wt");
vector<int> a;
deque<int> q;

int n, k, p, inc, fin, mini, p1, pas;

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

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

void Solve()
{
    /*for(int i = 0; i < k; i++)
         q[i] = a[i];*/
    
    p = minim(0, k-1);
    //fprintf(fout, "%d", p);
    //p1 = 0;
    for(int i = pas; i < n; i++)
    {
        if(i+k-1 >= n) break;
        else
        {
            if(i+k-1 < n)
            {
                p1 = minim(i, i+k-1);
                //fprintf(fout, "%d\n", p1);
                if(p < p1)
                {
                    p = p1;
                    inc = i+1;
                    fin = i+k;
                }
            }
        }
    }
}                    
        

int minim(int st, int dr)
{
    mini = 32001;
    for(int i = st; i <= dr; i++)
    {
        //fprintf(fout, "%d\n", a[i]);
        if(a[i] < mini) 
        {
            mini = a[i];
            pas = i;
        }    
        //fprintf(fout, "%d\n", mini);
    }    
    return mini;
}

void Write()
{
    fprintf(fout, "%d %d %d", inc, fin, p);
}