Cod sursa(job #374911)

Utilizator loginLogin Iustin Anca login Data 18 decembrie 2009 18:54:42
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
# include <fstream>
using namespace std;
int n, k, t[2003], p[2003], pmax=-(1<<30);
ofstream fout ("carnati.out");

int prof (int pr)
{
	int c[2003], i, poz=1;
	for(i=t[1];i<=t[n];i++)
		if (t[poz-1]!=t[poz])
		{
			if (i==t[poz])
			{
				if (p[poz]>=p[pr])
					c[i]=p[pr]-k;
				else
					c[i]=-k;
				poz++;
			}
			else	
				c[i]=-k;
		}
		else
		{
			if (i==t[poz])
			{
				if (p[poz]>=p[pr])
					c[i]=p[pr];
				else
					c[i]=0;
				poz++;
			}
			else	
				c[i]=0;
		}	
		
	int smin, scur, s;
	smin=c[t[1]];
	s=c[t[1]];
	scur=c[t[1]];
	for (i=t[1]+1;i<=t[n];i++)
	{
		scur+=c[i];
		if (scur-smin>s)
			s=scur-smin;
		if (smin>scur)
			scur=smin;
	}
	return s;
}

void read ()
{
	ifstream fin ("carnati.in");
	fin>>n>>k;
	for (int i=1;i<=n;i++)
		fin>>t[i]>>p[i];
}

int main ()
{
	int pcur;
	read ();
	for (int i=1;i<=n;i++)
	{	
		pcur=prof(i);
		if (pcur>pmax)
			pmax=pcur;
	}
	fout<<pmax;
	return 0;
}