Pagini recente » Cod sursa (job #2543261) | Cod sursa (job #2520730) | Cod sursa (job #2854898) | Cod sursa (job #2389704) | Cod sursa (job #2573913)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE {
int data;
int pozitia;
struct NODE* next;
struct NODE* prev;
}nod;
struct DEQUE {
struct NODE* head;
struct NODE* tail;
};
nod* formare(nod**cap,int* v, int n)
{
nod* p = (nod*)malloc(sizeof(nod));
for (int i = 0;i < n;i++)
{
nod* temp = (nod*)malloc(sizeof(nod));
temp->data = v[i];
temp->pozitia = i;
if ((*cap) == NULL)
{
temp->next = NULL;
temp->prev = NULL;
(*cap) = temp;
p = temp;
}
else
{
p->next = temp;
temp->next = *cap;
(*cap)->prev = temp;
temp->prev = p;
p = temp;
}
}
return *cap;
}
int main()
{
FILE* in = fopen("deque.in.txt", "r");
if (in == NULL)
{
printf("Eroare la formarea fisierului DEQUE.IN");
return 1;
}
FILE* out = fopen("deque.out.txt", "w");
int n, k;
fscanf(in, "%d", &n);
fscanf(in, "%d", &k);
int* v = (int*)malloc(sizeof(int) * n);
for (int i = 0;i < n;i++)
fscanf(in, "%d", &v[i]);
nod* cap = (nod*)malloc(sizeof(nod));
cap = NULL;
cap = formare(&cap,v, n);
nod* coada = (nod*)malloc(sizeof(nod));
coada=cap->prev;
//VERIFIC DACA MI AM FORMAT BINE LISTA DUBLU INLANTUITA
/*printf("Capul este nodul cu val %d si adresa %p are PREV: %p si NEXT: %p\n ", cap->data, cap, cap->prev, cap->next);
for (int i = 0;i < n;i++)
{
printf("nodul cu val %d si adresa %p are PREV: %p si NEXT: %p\n ", cap->data, cap, cap->prev, cap->next);
cap = cap->next;
}
printf("\nCOADA este nodul cu val %d si adresa %p are PREV: %p si NEXT: %p\n ", coada->data, coada, coada->prev, coada->next);*/
int suma = 0,done=0;
int min = cap->data;
nod* p = (nod*)malloc(sizeof(nod));
p = cap;
for (int i = 0;i <= n-k&&done==0;i++)
{
nod* q = (nod*)malloc(sizeof(nod));
q = p;
while (p->pozitia <i+k&&done==0)
{
if (p->data < min)
min = p->data;
if (p->pozitia == n - 1)
done = 1;
p = p->next;
}
suma = suma + min;
p = q;
p = p->next;
min = p->data;
}
printf("%d", suma);
}