Pagini recente » Diferente pentru runda/oji-2005-ix intre reviziile 6 si 3 | Diferente pentru lucrul-cu-nr-mari intre reviziile 21 si 18 | Diferente pentru utilizator/mihaelacismaru intre reviziile 49 si 48 | Diferente pentru ghid-complet-pentru-concursurile-de-informatica intre reviziile 38 si 8 | Cod sursa (job #1315653)
#include<fstream>
#include<deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int n,k,x;
long long s;
deque<int>val,poz;
int main()
{
f>>n>>k;
for(int i=1;i<=k;i++)
{
f>>x;
while(val.size()&&x<val[val.size()-1])
{
val.pop_back();
poz.pop_back();
}
val.push_back(x);
poz.push_back(i);
}
s=val[0];
for(int i=k+1;i<=n;i++)
{
f>>x;
while(val.size()&&x<val[val.size()-1])
{
val.pop_back();
poz.pop_back();
}
val.push_back(x);
poz.push_back(i);
if(poz[0]<=i-k)
{
val.pop_front();
poz.pop_front();
}
s+=val[0];
}
g<<s;
f.close();g.close();
return 0;
}