Pagini recente » Cod sursa (job #1145768) | Cod sursa (job #383586) | Cod sursa (job #2661231) | Cod sursa (job #1674803) | Cod sursa (job #709366)
Cod sursa(job #709366)
#include <fstream>
#include <iostream>
using namespace std;
struct Nod{
int valoare;
Nod* adr_urm;
};
void init(int a, Nod*& start, Nod*& end){
start = new Nod;
start->valoare = a;
start->adr_urm = 0;
end = start;
}
void adauga(int a, Nod*& start, Nod*& end){
Nod* elem;
elem = new Nod;
elem->adr_urm = 0;
elem->valoare = a;
end->adr_urm = elem;
end = elem;
}
void findMin(long nrElemente, Nod* start, long& suma){
int min = start->valoare;
Nod* minNod = start;
for (long i=0; i<nrElemente; i++){
if (start->valoare < min){
min = start->valoare;
minNod = start;
}
start = start->adr_urm;
}
suma = suma + minNod->valoare;
}
void citire(long& n, long& k, Nod*& start, Nod*& end, long& suma){
int nrCitit;
ifstream fileIN;
fileIN.open("deque.in");
fileIN>>n>>k;
fileIN>>nrCitit;
init(nrCitit, start, end);
int j = 1, k1 = 1;
Nod* elem;
for (long i=1; i<n; i++){
fileIN>>nrCitit;
adauga(nrCitit, start, end);
j++;
if (k == j){
findMin(k, start, suma);
j = j-1;
elem = start;
start = start->adr_urm;
delete elem;
}
}
fileIN.close();
}
int main(){
Nod* start = NULL, * end, *q, *p;
long n, k;
long suma = 0;
citire(n, k, start, end, suma);
ofstream fileOUT;
fileOUT.open("deque.out");
fileOUT<<suma;
fileOUT.close();
return 0;
}