Cod sursa(job #122491)

Utilizator alexeiIacob Radu alexei Data 12 ianuarie 2008 16:56:28
Problema Bilute Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
using namespace std;
#define nmax 30001
//#define inf 4294967295
char k[nmax];
int sol[nmax],sol2[nmax],sol7[nmax];
long long sol3[nmax],sol4[nmax],sol5[nmax],sol6[nmax];
int main()
{
    ifstream f("bilute.in");
    ofstream g("bilute.out");
 int c1[nmax];
 int n;
//unsigned long long smax=4294967295;
 f>>n;                   //4294967295
int i; 
char naspa='0';
int val1,val2,sumo=0;
 for(i=1; i<=n; ++i)
{  f>>val1>>val2;
 if(val1)
{  c1[i]=val1; 
   sol5[i]=sol5[i-1]+c1[i];
   sol[i]=val1*val2;
   sol2[i]=sol[i]+sumo;
   sumo=sol2[i];
 }
  else
  { k[i]='0'; naspa='1';  }   
}

for(i=n; i>=1; i--)
sol6[i]=sol6[i+1]+c1[i];

 for(i=1; i<=n; ++i)
 sol3[i]=sol3[i-1]+sol5[i-1]+c1[i];
 for(i=n; i>=1; --i){
 sol4[i]=sol4[i+1]+sol6[i+1]+c1[i]; 
 sol7[i]=sol7[i+1]+sol[i];}

unsigned long long sum,smax=0;
int ibun;
for(i=1; i<=n; i++)
{
 if(k[i]!='0') 
{  sum=sol2[i-1]+sol7[i+1]+sol3[i-1]+sol4[i+1];  
  if(!smax)
  smax=sum;
  if(sum<smax){
  smax=sum;
  ibun=i;}
}


}
g<<ibun<<" "<<smax<<"\n";
    return 0;
}