Pagini recente » Cod sursa (job #793883) | Cod sursa (job #743150) | Cod sursa (job #658828) | Cod sursa (job #2225637) | Cod sursa (job #2074196)
#include <iostream>
#include <fstream>
#include <stdlib.h>
struct el{
int val;
int existenta;
};
using namespace std;
void identare_st(el v[], int p, int &n){
for(int i=p;i<n;i++)v[p]=v[p+1];
n--;
}
int min(el v[],int n){
int minim=v[0].val;
for(int i=1;i<=n;i++)if(v[i].val<minim)minim=v[i].val;
return minim;
}
void update(el v[],int &n){
for(int i=0;i<n;i++){v[i].existenta--;
if(v[i].existenta==0)identare_st(v,i,n);
}
}
int main()
{ int n,k;
ifstream a("deque.in");
ofstream b("deque.out");
a>>n>>k;
el* v;
v=(el*)malloc(k*sizeof(el));
int marime_deque=0;
int i;
int x;
el y;
long long minim;
for(i=0;i<k;i++){a>>x;
y.val=x;
y.existenta=k;
v[marime_deque]=y;
marime_deque++;
update(v,marime_deque);
}
minim=min(v,marime_deque);
for(i=k;i<n;i++){
a>>x;
for(int j=0;j<marime_deque;j++){
if(v[j].val>x)identare_st(v,j,marime_deque);
}
v[marime_deque].val=x;
v[marime_deque].existenta=k;
minim+=min(v,marime_deque);
marime_deque++;
update(v,marime_deque);
}
b<<minim;
a.close();
b.close();
return 0;
}