Cod sursa(job #166435)

Utilizator pandaemonAndrei Popescu pandaemon Data 27 martie 2008 23:46:07
Problema Semne Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#define NMAX 5000003

long long n,s,i,var,plus,minus,maxm,maxp,x;
char a[NMAX],b[NMAX];

				// A - MULTIMEA +
			       //  B - MULTIMEA -



long long take(char c1[],char c2[],long long &lim2,long long &lim1)
{ x=0;

 while(c2[x]!=1) x=rand()%(lim2+1)+1;

 c1[x]=1; c2[x]=0;

 if(x>lim1) lim1=x;
 if(lim2==x) {for(i=lim2;c2[i]!=1;i++); lim2==i;}

 return x;}



int main()
{
  freopen("semne.in","r",stdin);
  freopen("semne.out","w",stdout);

  scanf("%lld %lld",&n,&s);

  for(i=1;i<=n;i++)
  {scanf("%lld",&x); a[x]=1; plus+=x;
   if(x>maxp) maxp=x;}

   a[0]=b[0]=1 ;

  while(plus-minus!=s)
  {
    if(plus-minus>s) {var=take(b,a,maxp,maxm); plus-=var; minus+=var; }
    if(plus-minus<s) {var=take(a,b,maxm,maxp); plus+=var; minus-=var; }

  }

  if(maxp>maxm) maxm=maxp;

  for(i=1;i<=maxm;i++)
  { if(a[i]==1) printf("+");
    if(b[i]==1) printf("-"); }

 printf("\n"); return 0; }