Cod sursa(job #137606)

Utilizator lamez0rBogdan Bondor lamez0r Data 17 februarie 2008 12:47:27
Problema Carnati Scor 0
Compilator c Status done
Runda preONI 2008, Runda 4, Clasa a 10-a Marime 1.01 kb
#include<stdio.h>
int n,t[2001];
long c,p[2001],costm;

void citire ()
     {
     int i;
     FILE *f;
     f=fopen("carnati.in","r");
     fscanf(f,"%d%ld",&n,&c);
     for (i=1;i<=n;++i)
	 fscanf(f,"%d%ld",&t[i],&p[i]);
     fclose(f);
     }

int selectie (int i, int j)
    {
    int k;
    long val,v[2001],ma,s=0;
    for (k=i;k<=j;++k)
	{
	s+=p[k];
	}
    ma=s/(j-i+1);
    for (k=i;k<=j;++k)
	if (p[k]>=ma)
	   {
	   val=p[k];
	   k=j+1;
	   }
    s=0;
    for (k=i;k<=j;++k)
	if (p[k]>=val)
	   s+=val;
    return s;
    }

void solve ()
     {
     int i,j;
     long cost;
     for (i=1;i<=n-1;++i)
	 for (j=i+1;j<=n;++j)
	     {
	     cost=selectie(i,j)-(t[j]-t[i]+1)*c;
	     if (cost>costm)
		{
		costm=cost;
		//deschis=t[i];
		//inchis=t[j];
		}

	     }
     }

void afisare ()
     {
     FILE *f;
     f=fopen("carnati.out","w");
     fprintf(f,"%ld",costm);
     fclose(f);
     }

int main ()
{
citire ();
solve ();
afisare ();
return 0;
}