Cod sursa(job #2063837)
| Utilizator | Data | 11 noiembrie 2017 15:34:04 | |
|---|---|---|---|
| Problema | Branza | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
using namespace std;
ifstream cin ("branza.in") ;
ofstream cout ("branza.out") ;
long long v[100001] , d[100001] ;
int main()
{
long long n , s ,t , st , dr , p ;
long long rez = 0 ;
cin >> n >> s >> t ;
t++ ;
st = 0 ;
dr = 1 ;
for (int i = 0 ; i < n ; i++) {
cin >> v[i] >> p ;
if (st <= dr && d[st] == i - t)
st++ ;
while (st <= dr && v[i] <= v[d[dr]] + s * (i - d[dr]))
dr-- ;
d[++dr] = i ;
rez += p * (v[d[st]] + s * (i - d[st])) ;
}
cout << rez ;
return 0;
}
