Pagini recente » Istoria paginii utilizator/bogdanneghina | Istoria paginii runda/simulareinfo1_4/clasament | Cod sursa (job #1343945) | Cod sursa (job #2134540) | Cod sursa (job #1728259)
#include <iostream>
#include <fstream>
using namespace std;
int n, k, number, D[500005], first, last, bestSol = -(1 << 30), bestPoz, poz[500005], semn, p;
string s;
void solve()
{
ifstream fin("secventa.in");
ofstream fout("secventa.out");
fin >> n >> k;
fin.get();
getline(fin, s);
s.insert(s.end(), 1, ' ');
for(int i = 0; i < s.size(); ++i)
if(s[i] == ' '){
p++;
number *= semn;
while(first <= last && number <= D[last])
last--;
D[++last] = number;
poz[last] = p;
if(p - poz[first] >= k) ++first;
if(p >= k && D[first] > bestSol){
bestSol = D[first];
bestPoz = p;
}
semn = 1;
number = 0;
}
else if(s[i] == '-')
semn = -1;
else
number = number * 10 + (s[i] - '0');
fout << bestPoz - k + 1 << ' ' << bestPoz << ' ' << bestSol;
}
int main()
{
solve();
return 0;
}