Pagini recente » Cod sursa (job #2713474) | Cod sursa (job #2989677) | Cod sursa (job #326470) | Cod sursa (job #494481) | Cod sursa (job #2887709)
#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <fstream>
#include <string>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
void push_back(int x,int d[],int &n)
{
n++;
d[n-1] = x;
}
void push_front(int x, int d[],int &n)
{
n++;
for(int i =n-1;i>=1;i--)
d[i] = d[i-1];
d[0] = x;
}
void pop_back(int d[],int &n)
{n--;}
void pop_front(int d[], int &n)
{
for(int i = 0;i< n;i++)
d[i] = d[i+1];
n--;
}
bool vida(int d[],int &n){
if(n==0)
return true;
return false;
}
int front(int d[])
{
return d[0];
}
int back(int d[],int n)
{
return d[n-1];
}
int main() {
int n,k,x,i;
f>>n>>k;
i = 0;
int v[n+1];
int d[n+1];
int suma = 0;
int j = 0;
while (f>>x)
{
v[i] = x;
i++;
}
int size = 0;
for(i = 0;i<n;i++)
{
while (!vida(d,size) && v[i]<v[back(d,size)])
{
pop_back(d,size);
}
push_back(i,d,size);
j++;
if(front(d)==i-k)
pop_front(d,size);
if(j>=k)
suma += v[front(d)];
}
g<<suma;
f.close();g.close();
return 0;
}