Admine, jel mozes proveriti gde je problem, kaj mene kompajlira sasvim ok, ali na server pokazuje greska u kompajliranje:
// z-paradajz
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
using namespace std;
#define FOR(i,n) for(int i=0;i<(n);i++)
#define FORR(i,a,b) for(int i=(a);i<=(b);i++)
#define INF 100000000
#define MAXN 200000
struct cena {
long ind;
int c;
friend bool operator <(const cena& c1, const cena& c2) {
return c1.c > c2.c;
}
};
cena c[MAXN], t;
long n, d, ans;
priority_queue <cena> q;
void input ()
{
scanf ("%ld %ld", &n, &d);
FOR (i,n) {
scanf ("%d", &c[i].c);
c[i].ind = i;
}
}
void solve ()
{
q.push (c[0]);
t = c[0];
ans += c[0].c;
FORR (i,1,n-1) {
while (q.top().ind + d - 1 < i && !q.empty())
q.pop();
bool ok = true;
if (!q.empty()) {
if (t.ind + d - 1 < i)
t = q.top();
}
else {
t = c[i];
ok = false;
}
if (c[i].c < t.c) t = c[i];
else if (ok) q.push (c[i]);
ans += t.c;
}
printf ("%ld\n", ans);
}
int main()
{
input ();
solve ();
return 0;
}
// z-paradajz
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
using namespace std;
#define FOR(i,n) for(int i=0;i<(n);i++)
#define FORR(i,a,b) for(int i=(a);i<=(b);i++)
#define INF 100000000
#define MAXN 200000
struct cena {
long ind;
int c;
friend bool operator <(const cena& c1, const cena& c2) {
return c1.c > c2.c;
}
};
cena c[MAXN], t;
long n, d, ans;
priority_queue <cena> q;
void input ()
{
scanf ("%ld %ld", &n, &d);
FOR (i,n) {
scanf ("%d", &c[i].c);
c[i].ind = i;
}
}
void solve ()
{
q.push (c[0]);
t = c[0];
ans += c[0].c;
FORR (i,1,n-1) {
while (q.top().ind + d - 1 < i && !q.empty())
q.pop();
bool ok = true;
if (!q.empty()) {
if (t.ind + d - 1 < i)
t = q.top();
}
else {
t = c[i];
ok = false;
}
if (c[i].c < t.c) t = c[i];
else if (ok) q.push (c[i]);
ans += t.c;
}
printf ("%ld\n", ans);
}
int main()
{
input ();
solve ();
return 0;
}