Cod sursa(job #540944)

Utilizator Rares95Rares Arnautu Rares95 Data 24 februarie 2011 17:43:48
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
# include <cstdio>
# include <deque>
  using namespace std;
	  long long n, k, i, s, a[5000001];
		deque <int> rares;
		
		int main ()
		{ freopen ("deque.in", "rt", stdin); freopen ("deque.out", "wt", stdout);
		  scanf ("%lld%lld", &n, &k); for (i = 1; i <= n; ++i) scanf ("%lld", &a[i]); 
		  for (i = 1; i <= n; ++i)
		  	{ while ( rares.empty() == 0 && a[i] <= a[rares.back()]) rares.pop_back();
			    rares.push_back(i);
			    if (rares.front() == i - k) rares.pop_front();
				  if (i >= k) s += a[rares.front()];
			  }
			printf ("%lld\n", s); return 0;
		}