Cod sursa(job #333904)

Utilizator bog29Antohi Bogdan bog29 Data 24 iulie 2009 15:48:42
Problema Gardieni Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#define dmax 1000004
#define dmax2 100
using namespace std;
ifstream in("gardieni.in");
ofstream out("gardieni.out");
long long sir[dmax],c;
int n,t,a,b;
typedef int huge[dmax2];
huge nr,sum;
void incr(long long x)
{	int i;
	while(x)
	{	nr[0]++;
		nr[nr[0]]=x%10;
		x=x/10;
	}
	/*for(i=nr[0];i>=1;i--)
		out<<nr[i];
	out<<'\n'<<'\n';*/
}
void adunare()
{	int i,tr;
	if(nr[0]>sum[0])
		sum[0]=nr[0];
	for(i=1;i<=sum[0];i++)
	{	sum[i]+=(nr[i]+tr);
		tr=sum[i]/10;
		sum[i]%=10;
	}	
	if(tr==1)
	{	sum[0]++;
		sum[sum[0]]=1;
	}	
	/*for(i=sum[0];i>=1;i--)
		out<<sum[i];
	out<<'\n';*/
}
int main()
{	int i,j;
	in>>n>>t;
	for(i=1;i<=n;i++)
	{	in>>a>>b>>c;
		for(j=a;j<=b;j++)
			if((c<sir[j])||(sir[j]==0))
				sir[j]=c;
	}
	in.close();
	for(i=1;i<=dmax2;i++)
	{	nr[i]=0;
		sum[i]=0;
	}
	for(i=1;i<=t;i++)
	{	incr(sir[i]);
		//out<<sir[i]<<'\n';
		adunare();
		for(j=0;j<=nr[0];j++)
			nr[j]=0;
	}	
	for(i=sum[0];i>=1;i--)
		out<<sum[i];
	out.close();
	return 0;
}