Pagini recente » Cod sursa (job #1209321) | Cod sursa (job #2591848) | Rating Tudor Moldovan (tudorrr) | Cod sursa (job #2485632) | Cod sursa (job #166435)
Cod sursa(job #166435)
#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; }