Cod sursa(job #461968)
| Utilizator | Data | 9 iunie 2010 14:22:58 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include<fstream>
using namespace std;
int v[1<<23],dq[1<<23],n,k,st=1,dr;
ifstream in("deque.in");
ofstream out("deque.out");
inline void s(int x)
{
if (st<=dr && dq[st]==x-k)
++st;
}
void d(int x)
{
while (st<=dr && v[x]<=v[dq[dr]])
--dr;
dq[++dr]=x;
}
int main()
{
int i,x;
long long nr=0;
in>>n>>k;
for (i=1;i<k;i++)
{
in>>x;
v[i]=x;
d(i);
}
for (;i<=n;i++)
{
in>>x;
v[i]=x;
s(i);
d(i);
nr+=v[dq[st]];
}
out<<nr<<"\n";
return 0;
}
