Pagini recente » Cod sursa (job #121366) | Istoria paginii runda/simulare_oji_hlo_avansati | Profil RolandPetrean | Cod sursa (job #85579) | Cod sursa (job #2729056)
#include <iostream>
#include <fstream>
#include <deque>
#define v first
#define s second
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int N, K, T;
int c, p;
long long S;
deque < pair < int, int > > B;
void Solve()
{
fin >> N >> K >> T;
int cost;
for( int i = 1; i <= N; ++i )
{
fin >> c >> p;
cost = c;
while( !B.empty() && B.back().v + (i - B.front().s) * K >= c )
B.pop_back();
while( !B.empty() )
{
if( i - B.front().s <= T && B.front().v + (i - B.front().s) * K < cost)
{
cost = B.front().v + (i - B.front().s) * K;
break;
}
B.pop_front();
}
B.push_back( {c,i} );
S += 1LL*cost*p;
}
fout << S;
}
int main()
{
Solve();
return 0;
}