Cod sursa(job #3124695)
| Utilizator | Data | 29 aprilie 2023 21:36:18 | |
|---|---|---|---|
| Problema | Deque | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.19 kb |
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
deque<long long>dq;
long long v[5000002];
int main()
{
int n , k;
cin >> n >> k;
long long suma = 0;
for(int i = 1; i <= n; ++ i)
{
cin >> v[i];
while(dq.front() + k <= i && dq.empty() == false)
{
dq.pop_front();
}
if(dq.empty() == false)
{
if(v[dq.front()] > v[i])
{
dq.push_front(i);
}
else
{
if(v[dq.back()] <= v[i])
{
dq.push_back(i);
}
else
{
while(dq.empty() == false && v[dq.back()] > v[i])
{
dq.pop_back();
}
dq.push_back(i);
}
}
}
else
{
dq.push_front(i);
}
if(i >= k )
{
suma += v[dq.front()];
cout << v[dq.front()]<< " " ;
}
}
cout << suma;
return 0;
}
