Pagini recente » Cod sursa (job #306221) | Cod sursa (job #301740) | Cod sursa (job #976877) | Cod sursa (job #2523283) | Cod sursa (job #2731563)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
/*
class stiva {
private:
int n = 10;
char* v;
int lungime;
public:
void push(char x) {
if (lungime == n - 1)
{
char* aux;
n *= 2;
aux = new char[n];
for (int i = 0; i < n / 2; i++)
aux[i] = v[i];
delete[] v;
v = aux;
}
v[lungime++] = x;
}
int pop() {
char elem;
if (lungime > 0) {
lungime--;
elem = v[lungime];
if (lungime < n / 4)
{
char* aux;
n /= 4;
aux = new char[n];
for (int i = 0; i < n; i++)
aux[i] = v[i];
delete[] v;
v = aux;
}
return elem;
}
else {
return NULL;
}
}
int get_n()
{
return n;
}
stiva() {
lungime = 0;
v = new char[n];
for (int i = 0; i < n; i++)
v[i] = 0;
}
};
int main() {
stiva stack;
int n, i, max=0, k=0,N;
char paranteza, p;
bool corect = true, ok=true;
ifstream fin("paranteze.in");
ofstream fout("paranteze.out");
fin >> n;
for (i = 0; i < n; i++)
{
fin >> paranteza;
if ((paranteza == '(' || paranteza == '[' || paranteza == '{'))
{
stack.push(paranteza);
if (k > max)
{
max = k;
k = 0;
}
}
else
{
p = stack.pop();
if (p == NULL)
{
corect = false;
k = 0;
}
else if (p == '(' && paranteza == ')' || p == '[' && paranteza == ']' || p == '{' && paranteza == '}')
{
k += 2;
corect = true;
}
else
{
corect = false;
k = 0;
}
}
}
fout << max;
fout.close();
return 0;
}
*/
int deque[5000005], v[5000005];
int main() {
ifstream fin("deque.in");
ofstream fout("deque.out");
int i, n, k, fata, spate;
long long s = 0;
fin >> n >> k;
fata = 0;
spate = -1;
for (i = 0; i < n; i++)
{
fin >> v[i];
while (fata <= spate && v[i] <= v[deque[spate]])
{
spate--;
}
spate++;
deque[spate] = i;
if (deque[fata] == i - k)
{
fata++;
}
if (i >= k - 1)
{
s += v[deque[fata]];
cout << s << ' ';
}
}
fout << s;
fout.close();
return 0;
}