Pagini recente » Atasamentele paginii Profil mihai_spartanul | Statistici Bianca Tazlauanu (bianca.tazlauanu) | Cod sursa (job #1044373) | Diferente pentru problema/spider-man intre reviziile 36 si 2 | Cod sursa (job #1066996)
//
// main.cpp
// deque
//
// Created by Catalina Brinza on 12/3/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <fstream>
#include <vector>
using namespace std;
ifstream f("/Users/catalinabrinza/Documents/untitled folder/deque/deque/deque.in");
ofstream g("/Users/catalinabrinza/Documents/untitled folder/deque/deque/deque.out");
struct bla
{
int val,poz;
};
vector<bla> a;
int n;
void coboara(int i)
{
while ((a[i].val>a[i*2+1].val || a[i].val>a[i*2].val) && (i*2+1<=n))
if (a[i*2+1].val<a[i*2].val)
{
bla w;
w=a[i];
a[i]=a[i*2+1];
a[i*2+1]=w;
i=(i<<1)+1;
}
else
{
bla w;
w=a[i];
a[i]=a[i*2];
a[i*2]=w;
i=i<<1;
}
if (a[i*2].val<a[i].val)
{
bla w;
w=a[i];
a[i]=a[i*2];
a[i*2]=w;
i=i<<1;
}
return;
}
void urca(int in)
{
bla aux;
while (a[in].val<a[in/2].val && in!=1)
{
aux=a[in];
a[in]=a[in/2];
a[in/2]=aux;
in=in/2;
}
return;
}
int main()
{int i,x,j,k,s=0,y,z,in,b;
bla w,aux;
w.val=0; w.poz=0;
a.push_back(w);
f>>n>>k;
for (i=1;i<=n;++i)
{
f>>x;
if (i<=k)
{
w.val=x;
w.poz=i;
a.push_back(w);
urca(i);
if (i==k) s+=a[1].val;
}
else
{
if (a[1].poz<=i-k)
{
a[1]=a[n];
a.pop_back();
coboara(1);
}/*
else{
w.val=x;
w.poz=i;
a.push_back(w);
urca(a.size()-1);
}*/
s+=a[1].val;
}
}
g<<s;
return 0;
}