Pagini recente » Cod sursa (job #250666) | Cod sursa (job #2604026) | Cod sursa (job #2939167) | Cod sursa (job #2966703) | Cod sursa (job #1245006)
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
struct numar
{
int valoare;
int de_stat;
};
numar sir[5000005];
int main()
{
long long s=0;
int n, k, nr, inceput=1, sfarsit=0, poz;
f>>n>>k;
for(int i=1; i<=k; i++)
{
f>>nr;
sir[++sfarsit].valoare=nr;
sir[sfarsit].de_stat=i+k;
poz=sfarsit-1;
if(sfarsit>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
{
while(poz>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
poz--;
poz++;
sir[poz]=sir[sfarsit];
sfarsit=poz;
}
}
s+=sir[inceput].valoare;
for(int i=k+1; i<=n; i++)
{
f>>nr;
if(sir[inceput].de_stat-i==0)
inceput++;
sir[++sfarsit].valoare=nr;
sir[sfarsit].de_stat=i+k;
poz=sfarsit-1;
if(sfarsit>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
{
while(poz>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
poz--;
poz++;
sir[poz]=sir[sfarsit];
sfarsit=poz;
}
s+=sir[inceput].valoare;
}
g<<s;
f.close();
g.close();
return 0;
}