Pagini recente » Cod sursa (job #1688253) | Cod sursa (job #2075562) | Cod sursa (job #3180802) | Cod sursa (job #2978026) | Cod sursa (job #2232511)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,Front,Back,Deque[5000005],i,j,a[5000005],mini;
long long s;
int main()
{
fin>>n>>k;
Front=0; Back=1;
for(i=1;i<k;i++)
{
fin>>a[i];
while (Front>=Back && a[i] <= a[Deque[Front]]) Front--;
Deque[++Front]=i;
}
for(;i<=n;i++)
{
fin>>a[i];
while (Front>=Back && a[i] <= a[Deque[Front]]) Front--;
Deque[++Front]=i;
if(Deque[Back] == i-k) Back++;
s+=a[Deque[Back]];
/*mini=Deque[Back];
for(j=Back+1;j<Front;j++) mini=min(mini,Deque[j]);
if(a[i]<Deque[Front]) Deque[Front]=a[i];
else Deque[++Front]=a[i];
mini=min(mini,Deque[Front]);
s+=mini;
if(Deque[Back]==a[i-k+1]) Back++;
*/
}
fout<<s;
return 0;
}