Cod sursa(job #122379)

Utilizator alexeiIacob Radu alexei Data 11 ianuarie 2008 23:09:24
Problema Bilute Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#define nmax 30001
#define inf 99999999
char k[nmax];
int main()
{
    
 freopen("bilute.in","r",stdin);
 freopen("bilute.out","w",stdout);
 int sol[nmax];
 int c1[nmax],l2[nmax];
 int n;
long long smax=inf;
 scanf("%d",&n);   
int i,j; 
int val1,val2,diff=0;
 for(i=1; i<=n; ++i)
{  scanf("%d%d",&val1,&val2);
 if(val1)
{  c1[i]=val1; l2[i]=val2;
}
 else
  k[i]='0';     
}
 for(i=1; i<=n; ++i)
          if(k[i]!='0')
          sol[i]=l2[i]*c1[i];
long long sum;
int ibun;
 for(i=1; i<=n; ++i)
{ if(k[i]!='0'){
  sum=0; 
          for(j=1; j<i; ++j)
                 if(k[j]!='0')
                  sum+=sol[j]+c1[j]*(i-j); 
                    
          for(j=i+1; j<=n; ++j)
                 if(k[j]!='0')  
                  sum+=sol[j]+c1[j]*(j-i);  
   
   if(sum<smax){
   smax=sum;
   ibun=i;}
}
}

printf("%d %lld\n",ibun,smax);    
    
    return 0;
}