Mai intai trebuie sa te autentifici.
Cod sursa(job #821249)
| Utilizator | Data | 21 noiembrie 2012 22:07:46 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
#include <deque>
using namespace std;
int v [5000010];
int main()
{
deque <int> scv; //pe prima poz in scv am pozitia minimului, pe pozitia oglindita am minimul
ifstream f("deque.in");
ofstream g("deque.out");
int i, n, k, nrc;
long long rez = 0;
f >> n >> k;
for (i = 1; i <= n; ++ i)
{
f >> v [i];
while ( !scv .empty () && v [scv .back ()] > v [i]) scv .pop_back ();
scv .push_back (i);
if (scv .front () <= i - k) scv .pop_front ();
if (i >= k) rez += v [scv .front()];
}
g << rez << '\n';
}
