Pagini recente » Cod sursa (job #1257997) | Cod sursa (job #2781891) | Cod sursa (job #1488405) | Cod sursa (job #1795948) | Cod sursa (job #716403)
Cod sursa(job #716403)
#include <fstream>
#define DIM 500001
using namespace std;
int list[DIM], n, k, bPos, fPos, base;
void readFile()
{
ifstream inFile ("secventa.in");
inFile>>n>>k;
for (int i=1;i<=n;i++)
inFile>>list[i];
inFile.close();
}
void printFile()
{
ofstream outFile ("secventa.out");
outFile<<bPos<<" "<<fPos<<" "<<base<<endl;
outFile.close();
}
void detSol()
{
int right,left,i,deque[DIM];
left=right=1;
deque[1]=1;
base=-DIM;
for (i=2; i < k; i++)
{
while (list[deque[right]]>=list[i]&&right>=left)
right--;
right++;
deque[right]=i;
}
for(i=k;i<=n;i++)
{
while (list[deque[right]]>=list[i]&&right>=left)
right--;
right++;
deque[right]=i;
if (list[deque[left]]>base)
{
base=list[deque[left]];
bPos=i-k+1;
fPos=i;
}
if (deque[left]<i-k+2)
left++;
}
}
int main()
{
readFile();
detSol();
printFile();
return 0;
}