Cod sursa(job #2833223)

Utilizator db_123Balaban David db_123 Data 14 ianuarie 2022 22:10:14
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <vector>
#include <climits>
#include <queue>

using namespace std;

ifstream cin("secventa.in");
ofstream cout("secventa.out");

#define FOR(i,a,b) for(int i=(a);i<=(b);i++)

class Info{
public:
    int nr;
    int poz;
};

class Compare{
public:
    bool operator()(Info a,Info b){
        return a.nr>b.nr;
    }
};

int n,k;
vector<Info> v;
vector<int> minR;
priority_queue<Info,vector<Info>,Compare> Q;

void read(){
    cin>>n>>k;
    v.resize(n+1);
//    minR.resize(n+1,INT_MAX);
    FOR(i,1,n){
        cin>>v[i].nr;
        v[i].poz=i;
    }
}

Info addinPQ(int startSeq,int endSeq){
    while(!Q.empty())Q.pop();
    FOR(i,startSeq,endSeq){
        Q.push(v[i]);
    }
    //cout<<"sequence start : " << startSeq << " end : " << endSeq << " min : " << Q.top().nr << " poz " << Q.top().poz << "\n";
    return Q.top();
}
void solve2(){
    Info minElem,maxElem;
    maxElem.nr = INT_MIN;

    FOR(i,1,n-k+1){
        minElem = addinPQ(i,i+k-1);
        if(maxElem.nr < minElem.nr)
            maxElem.nr = minElem.nr,maxElem.poz = minElem.poz;
    }
    cout<<maxElem.poz<<" "<<maxElem.poz+k-1<<" "<<maxElem.nr;
}

int main() {

    read();
    solve2();
    return 0;
}