Pagini recente » Cod sursa (job #2635778) | Cod sursa (job #2264061) | Cod sursa (job #2911078) | Cod sursa (job #1223886) | Cod sursa (job #899395)
Cod sursa(job #899395)
#include<iostream>
#include<fstream>
#include<vector>
#include<deque>
#include<string>
using namespace std;
int main()
{
ifstream f("secventa.in",ios::in);
ofstream g("secventa.out",ios::out);
int i,a,min=0,poz=0,sf,j=0;
vector<int> v;
deque<int> q;
int N,K;
string S="";
f>>N>>K;
getline(f,S);
getline(f,S);
min=-5000000000;
v.resize(N+1,0);
for(i=1;i<=N;i++)
{while(S[j]==' ' && (j!=S.length()-1))
j++;
a=1;
if(S[j]=='-')
{j++;
a=-1;}
while(S[j]<='9' && S[j]>='0' && (j!=S.length()-1))
{v[i]=v[i]*10+(int(S[j])-48);
j++;}
v[i]=v[i]*a;
while(!q.empty() && v[q.back()]>=v[i])
q.pop_back();
q.push_back(i);
if(q.front()==i-K)
q.pop_front();
if(i>=K)
if(v[q.front()]>min)
{min=v[q.front()];
poz=i-K+1;
sf=i;}
}
while(v[poz-1]>=min && poz>1)
poz--;
g<<poz<<" "<<sf<<" "<<min<<endl;
f.close();
g.close();
return 0;}