Cod sursa(job #276781)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 11 martie 2009 12:35:54
Problema Semne Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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]='-';
  }
 }
 
 if(sum==s)
 {
  for(i=n;i>=1;i--)
   fout<<semn[i];
  fout.close();
  return 0;    
 }
 else
 {
  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;
}