Cod sursa(job #1113887)
Utilizator | Ciurez Marius-Andrei CiurezAndrei | Data | 20 februarie 2014 23:59:06 |
---|---|---|---|
Problema | Branza | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <fstream>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
long long sol,n,s,t,p,u,pi,i;
long long d[100010],v[100010];
int main () {
f>>n>>s>>t;
p=1;u=0;
for (i=1;i<=n;i++) {
f>>v[i]>>pi;
while(p<=u && v[i]<=(v[d[u]]+s*(i-d[u])))
u--;
d[++u]=i;
while (d[p]<i-t)
p++;
sol+= (v[d[p]]+s*(i-d[p]))*pi;
}
g<<sol<<"\n";
return 0;
}