Pagini recente » Cod sursa (job #3196596) | Cod sursa (job #1586792) | Cod sursa (job #2951151) | Cod sursa (job #242274) | Cod sursa (job #126657)
Cod sursa(job #126657)
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("gardieni.in","r");
FILE*fout=fopen("gardieni.out","w");
#define maxt 1000000
long long t,a,b,c,n;
long long v[2*maxt];
void build()
{
memset(v,-1,sizeof(v));
}
void update(long long nod,long long st,long long dr)
{
if(a<=st&&dr<=b)
{
if(v[nod]==-1) v[nod]=c*(dr-st+1);
else if(v[nod]>c*(dr-st+1)) v[nod]=c*(dr-st+1);
}
else
{
long long mij=(st+dr)>>1;
long long ls=nod<<1;
long long rs=ls+1;
if(a<=mij) update(ls,st,mij);
if(b>=mij+1) update(rs,mij+1,dr);
if(v[ls]!=-1&&v[rs]!=-1) if(v[nod]==-1) v[nod]=v[ls]+v[rs];
else if(v[nod]>v[ls]+v[rs]) v[nod]=v[ls]+v[rs];
}
}
int main()
{
long long i;
fscanf(fin,"%lld",&n);
fscanf(fin,"%lld",&t);
build();
for(i=1;i<=n;i++)
{
fscanf(fin,"%lld" "%lld" "%lld",&a,&b,&c);
update(1,1,t);
}
fprintf(fout,"%lld",v[1]);
fclose(fin);
fclose(fout);
return 0;}