Pagini recente » Cod sursa (job #2338620) | Cod sursa (job #2045821) | Cod sursa (job #2893783) | Cod sursa (job #2061120) | Cod sursa (job #1249873)
# include <bits/stdc++.h>
using namespace std;
ifstream fi("semne.in");
ofstream fo("semne.out");
const int nmax = 50005;
long long a[nmax],s[nmax],v[nmax];
bool b[nmax];
int x,y;
int main(void)
{
long long n,s1,Sum=0;
fi >> n >> s1;
srand(time(NULL));
for (int i=1,ok;i<=n;++i)
{
ok = rand() % 2;fi>>a[i];
if (ok) s[++x]=i,Sum+=a[i];
else Sum-=a[i],v[++y]=i;
}
int p;
while (Sum != s1)
if (Sum < s1)
{
p = rand() % y;++p;
s[++x]=v[p];
Sum+=2 * a[v[p]];
swap(v[p],v[y--]);
}
else
{
p = rand() % x;++p;v[++y]=s[p];
Sum-=2 * a[s[p]];
swap(s[p],s[x--]);
}
for (int i=1;i<=x;++i) b[s[i]]=1;
for (int i=1;i<=n;++i) fo << (b[i] ? '+':'-');
return 0;
}