Pagini recente » Cod sursa (job #2221015) | Cod sursa (job #983378) | Cod sursa (job #2818231) | Cod sursa (job #747788) | Cod sursa (job #2391135)
#include <fstream>
#include <deque>
#include <cstring>
#define N 500010
#define intt int
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
intt v[N], cnt, nr, sol= -30001, solstart, solfinish;
int dif = 30001;
char s[50000005];
int n, k;
deque <int> Q;
int main()
{
f >> n >> k;
f.get();
f.getline(s,50000001);
int str = strlen(s);
for (int i = 0 ; i < str ; ++ i )
{
cnt ++;
nr = 0 ;
while ( s [ i ] != ' ' && i < str ) {
if ( s [ i ] == '-' )
{
nr = - ( s [ i + 1 ] - '0' ) ;
i +=2 ;
}
else
{
if ( nr >= 0 )
nr = nr * 10 + ( s [ i ] - '0' ) , i ++ ;
else
nr = nr * 10 - ( s [ i ] - '0' ) , i ++ ;
}
}
v [ cnt ] = nr ;
}
for(intt i = 1; i <= n ; ++i )
{
while(!Q.empty() && v[i] <= v[Q.back()] ) Q.pop_back();
Q.push_back(i);
if(Q.front() == i-k) Q.pop_front();
if(i >= k)
{
if(sol < v[Q.front()])
{
sol = v[Q.front()];
solfinish = i;
solstart = i - k + 1;
}
}
}
g << solstart << ' ' << solfinish << ' ' << sol;
f.close(); g.close();
return 0;
}