Cod sursa(job #125124)

Utilizator mihai0110Bivol Mihai mihai0110 Data 20 ianuarie 2008 11:31:34
Problema Gardieni Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 0.67 kb
#include<stdio.h>
long i,j,n,li,ls,t,max;
long a[50006],b[50006],c[50006];
long long sol;
int main(void)
	{
	freopen("gardieni.in","r",stdin);
	freopen("gardieni.out","w",stdout);
	scanf("%ld%ld",&n,&t);
	for(i=1;i<=n;i++)
		{
		scanf("%ld%ld%ld",&a[i],&b[i],&c[i]);
		if(b[i]>t)
		b[i]=t;
		sol+=c[i]*(b[i]-a[i]+1);
		}
	for(i=1;i<=n;i++)
	for(j=i+1;j<=n;j++)
		{
		li=0;
		ls=0;
		if(a[j]<=a[i])
			li=a[i];
		else
		if(a[j]>a[i]&&a[j]<=b[i])
			li=a[j];
		if(b[j]>=b[i])
			ls=b[i];
		else
		if(b[j]<b[i]&&b[j]>=a[i])
			ls=b[j];
		max=c[i];
		if(c[j]>c[i])
		max=c[j];
		if(ls&&li)
		sol-=max*(ls-li+1);
		}
	printf("%lld\n",sol);
	return 0;
	}