Pagini recente » Cod sursa (job #1522552) | Cod sursa (job #2312924) | Cod sursa (job #1503124) | Cod sursa (job #1227940) | Cod sursa (job #1835161)
#include <cstdio>
#include <climits>
using namespace std;
FILE *f, *g;
int d[100001], st = 1, dr = 0;
int n, s, t;
long long c[100001];
long long v[100001];
void stanga(int i)
{
if(i - t == d[st])
st ++;
}
void dreapta(int i)
{
while(st <= dr && v[i] <= v[d[dr]] + (i - d[dr]) * s)
dr --;
d[++ dr] = i;
}
unsigned long long sum;
void readFile()
{
f = fopen("branza.in", "r");
fscanf(f, "%d%d%d", &n, &s, &t);
int i;
for(i = 1; i <= n; i ++)
{
fscanf(f, "%d%d", &v[i], &c[i]);
if(i > t)
stanga(i);
dreapta(i);
sum += (v[d[st]] + (i - d[st]) * s) * c[i];
}
}
void printFile()
{
g = fopen("branza.out", "w");
fprintf(g, "%llu\n", sum);
fclose(g);
}
int main()
{
readFile();
printFile();
return 0;
}