Pagini recente » Cod sursa (job #392639) | Cod sursa (job #1186791) | Cod sursa (job #2461341) | Cod sursa (job #105916) | Cod sursa (job #3135009)
#include <stdio.h>
#define MAX_SIZE 5000000
int main() {
// Abrir archivo de entrada
FILE *inputFile = fopen("deque.in", "r");
if (inputFile == NULL) {
printf("No se pudo abrir el archivo de entrada.\n");
return 1;
}
// Leer N y K desde el archivo de entrada
int N, K;
fscanf(inputFile, "%d %d", &N, &K);
// Validar restricciones
if (N < 1 || N > 5000000 || K < 1 || K > N) {
printf("Restricciones no cumplidas.\n");
fclose(inputFile);
return 1;
}
// Leer los elementos del vector A desde el archivo de entrada
int A[MAX_SIZE];
int i;
for (i = 0; i < N; i++) {
fscanf(inputFile, "%d", &A[i]);
if (A[i] < -10000000 || A[i] > 10000000) {
printf("Restricciones no cumplidas.\n");
fclose(inputFile);
return 1;
}
}
// Cerrar archivo de entrada
fclose(inputFile);
// Inicializar la deque
Deque deque;
initializeDeque(&deque);
// Calcular la suma de los mínimos
long long sumOfMinimums = 0;
// Procesar los enteros
for (i = 0; i < N; i++) {
// Eliminar el frente si la deque tiene más de K elementos
if (i >= K) {
deleteFront(&deque);
}
// Insertar el elemento actual al final de la deque
insertRear(&deque, A[i]);
// Si la deque tiene K elementos, obtener el mínimo y agregarlo a la suma
if (i >= K - 1) {
int minimum = getMinimum(&deque);
sumOfMinimums += minimum;
}
}
// Abrir archivo de salida
FILE *outputFile = fopen("deque.out", "w");
if (outputFile == NULL) {
printf("No se pudo abrir el archivo de salida.\n");
return 1;
}
// Escribir el resultado en el archivo de salida
fprintf(outputFile, "%lld\n", sumOfMinimums);
// Cerrar archivo de salida
fclose(outputFile);
return 0;
}