Cod sursa(job #155383)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 11 martie 2008 21:41:22
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

struct ggg
{
   long t,p;
};
typedef struct ggg pozis;
pozis a[2010];

long N,nr;
long S,k,suma[2010],K;

void citire()
{
  freopen ("carnati.in","r",stdin);
  scanf("%ld%ld",&N,&K);
     for (int i=0;i<N;i++)
	scanf("%ld%ld",&a[i].t,&a[i].p);
  fclose(stdout);
}

void maxim()
{
   long long maxim=0;

   for (int i=0;i<N;i++)
   {
     long long S=0,poz=0,ok=0;
     for (int k=0;k<N;k++)
     {
      if (a[k].p>=a[i].p && ok==0)
      {
	ok=1;
	S=a[i].p;
	poz=a[k].t;
      }
      else
      {
	if (a[k].p>=a[i].p)
	{
	  S+=a[i].p;
	}
      }

       if (S+(poz-a[k].t-1)*K<0)
       {
	 S=0;
	 ok=0;
       }
       else
	 if (S+(poz-a[k].t-1)*K>maxim)
	    maxim=S+(poz-a[k].t-1)*K;
     }
   }
   freopen ("carnati.out","w",stdout);
   printf ("%lld\n",maxim);
   fclose (stdout);
}

int main ()
{
   citire();
   maxim();
   return 0;

}