Cod sursa(job #2549783)
| Utilizator | Data | 17 februarie 2020 23:50:45 | |
|---|---|---|---|
| Problema | Branza | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <fstream>
using namespace std;
long long n,S,T,i,p,u,sol,D[100010],C[100010],P[100010];
int main ()
{
ifstream fin ("branza.in");
ofstream fout("branza.out");
fin>>n>>S>>T;
for(i=1;i<=n;i++)
fin>>C[i]>>P[i];
D[1]=1;
p=1;
u=1;
sol=sol+C[1]*P[1];
for(i=2;i<=n;i++)
{
while(p<=u&&C[i]<=(i-D[u])*S+C[D[u]])
u--;
D[++u]=i;
if(i-D[p]==T+1)
p++;
sol=sol+(C[D[p]]+S*(i-D[p]))*P[i];
}
fout<<sol;
return 0;
}
