Pagini recente » Atasamentele paginii Clasament oni2014_ziua_ii | Cod sursa (job #2343806) | Cod sursa (job #2485118) | Cod sursa (job #339268) | Cod sursa (job #166557)
Cod sursa(job #166557)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NMAX 50003
long long n,S,i,suma;
long long a[NMAX]; int s[NMAX],max[2000001];
long long mutare(int sign)
{
long long modul=S-suma;
if(modul<0) modul*=-1;
if(max[modul]>0) i=max[modul];
else
while(s[i=rand()%n+1]!=sign);
s[i]*=-1;
return a[i]; }
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",&a[i]); suma+=a[i]; s[i]=1; max[a[i]]=i;}
while(suma!=S)
{
if(suma<S) suma+=(mutare(-1)<<1);
if(suma>S) suma-=(mutare(1)<<1);
}
for(i=1;i<=n;i++)
if(s[i]==1) printf("+");
else printf("-");
printf("\n"); return 0; }