Cod sursa(job #2140081)

Utilizator fylot3Bogdan Filote fylot3 Data 22 februarie 2018 23:54:36
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
# include <stdio.h>
# include <deque>
# include <vector>

int main(void) {
	int N, K, El;
	long long sum = 0;
	FILE *fin = fopen("deque.in", "r");
	FILE *fout = fopen("deque.out", "w");

	std::deque<int> dq;
	std::vector<int> v;
	fscanf(fin, "%d%d", &N, &K);

	for (int i = 0; i < N; i++) {
		fscanf(fin, "%d", &El);
		v.push_back(El);
	}
	fclose(fin);

	for (int i = 0; i < K - 1; i++) {
		El = v[i];

		while (!dq.empty() && El < v[dq[dq.size() - 1]]) {
			dq.pop_back();
		}

		dq.push_back(i);
	}

	for (int i = K - 1; i < N; i++) {
		El = v[i];

		while (!dq.empty() && El < v[dq[dq.size() - 1]]) {
			dq.pop_back();
		}

		dq.push_back(i);

		sum += v[dq[0]];
		if (i - K + 1 >= dq[0]) {
			dq.pop_front();
		}
	}

	fprintf(fout, "%lld", sum);
	fclose(fout);
	return 0;
}