Cod sursa(job #721846)
| Utilizator | Data | 24 martie 2012 12:05:16 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include<fstream>
#include<queue>
#define _NM 5000010
using namespace std;
int A[_NM], nA;
struct greater_A_val
{
bool operator()(int i1, int i2)
{
return A[i1]>A[i2];
}
};
int main()
{
ifstream fin("deque.in");
ofstream fout("deque.out");
int k; fin>>nA>>k;
priority_queue<int,vector<int>,greater_A_val > iq;
long long sum=0;
for (int i=1;i<=nA;i++)
{
fin>>A[i];
iq.push(i);
if (i>=k)
{
while (!iq.empty()&&iq.top()<=i-k)
iq.pop();
sum+=A[iq.top()];
}
}
fout<<sum;
return 0;
}
