Cod sursa(job #276794)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 11 martie 2009 12:40:01
Problema Semne Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <time.h>

#define IN "semne.in"
#define OUT "semne.out"
#define max 50555

ifstream fin(IN);
ofstream fout(OUT);

long n,s,sum;
long v[max];
char semn[max];

int main()
{
 long i;
 long x;
    
 srand(time(0));   
 fin>>n>>s;
 for(i=1;i<=n;i++)
  fin>>v[n-i+1];
 fin.close();

 sum=0;
 for(i=1;i<=n;i++)
 {
  if(sum<s)
  {
   sum+=v[i];
   semn[i]='+';
  }
  else
  {
   sum-=v[i];
   semn[i]='-';
  }
 }
 
 while(clock()<2800)
 {
  x=rand()%n+1;
  if(sum<s)
  {
   if(semn[x]=='-')
   {
    semn[x]='+';
    sum+=2*v[x];
   }
  }
  else
   if(sum>s)
   {
    if(semn[x]=='+')
    {
     semn[x]='-';
     sum-=2*v[x];
    }
   }
   else
    break;
 }
 for(i=n;i>=1;i--)
  fout<<semn[i];
 fout.close(); 
 return 0;
}