Pagini recente » Cod sursa (job #2880710) | Cod sursa (job #742123) | Cod sursa (job #1871014) | Cod sursa (job #2214323) | Cod sursa (job #2731191)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int n,k,i,primul,ultimul;
bool OK;
long long S;
long long x[5000001],Deque[5000001];
int main()
{
f>>n>>k;
for(i=1;i<=n;i++){
f>>x[i];
}
S=0;
primul=1;
ultimul=0;
for(i=1;i<=n;i++){
while(x[i]<x[Deque[ultimul]]){
if(primul>ultimul){
break;
}
else{
ultimul--;
}
}
ultimul++;
Deque[ultimul]=i;
if(Deque[primul]==i-k){
if(OK==0){
S=x[Deque[primul]];
//am descoperit prima secventa de lungima k
OK=1;
}
//am ajuns la o secventa de lungime k, asa ca nu mai avem nevoie de primul
primul++;
}
if(OK==1){
S=S+x[Deque[primul]];
}
}
g<<S;
return 0;
}