Cod sursa(job #420076)

Utilizator laurpoppopescu laurentiu laurpop Data 18 martie 2010 14:28:01
Problema Branza Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
FILE *f=fopen("branza.in","r");
FILE *g=fopen("branza.out","w");
long long i,j,m[100001],n,t,s,rez;
long long c[100001],w[1000001];
long long deque[2][100001],u,p;

int main(){
//***citire***//	
fscanf(f,"%lld%lld%lld",&n,&s,&t);
for(i=1;i<=n;i++)
	fscanf(f,"%lld%lld",&c[i],&w[i]);
int ok=0;
//***dinamica***//
p=1; deque[1][1]=1;
for(i=1;i<=n;i++)  // m[i]=costul minim pt a cumpara un kg de branza in ziua i
{  
 while(i-deque[1][p]>t)
	  p++;
  ok=0;
  while( u>=p && deque[0][u] >= c[i]+(n-i)*s)
	   {  u--;
          ok=1;
	   }
  deque[0][++u]=c[i] + (n-i)*s;
  if(ok==1)
  deque[1][u]=i;
  else deque[1][u]=deque[1][p];
  rez+=(c[deque[1][p]]+(i-deque[1][p])*s)*w[i];
}




fprintf(g,"%lld",rez);
return 0;
}