Pagini recente » Cod sursa (job #1972946) | Cod sursa (job #1021149) | Cod sursa (job #185055) | Cod sursa (job #2433491) | Cod sursa (job #521626)
Cod sursa(job #521626)
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
const int maxn = 50005;
long long int i , j , tip , pluss[maxn] , minuss[maxn] , n , m , ind , v[maxn] , sum , s , nr;
bool is[maxn];
ifstream fin("semne.in");
ofstream fout("semne.out");
int main()
{
srand(time(0));
fin >> nr >> s;
for( i = 1 ; i <= nr ; ++i ) {
fin >> v[i];
tip = rand() % 2;
if ( tip )
minuss[++n] = i , sum -= v[i];
else
pluss[++m] = i , sum += v[i];
}
for ( ; 1 ; ) {
if ( sum == s ) break;
if ( sum > s ) {
ind = rand() % m + 1;
sum -= 2 * v[pluss[ind]];
minuss[++n] = pluss[ind];
pluss[ind] = pluss[m--];
}
else {
ind = rand() % n + 1;
sum += 2 * v[minuss[ind]];
pluss[++m] = minuss[ind];
minuss[ind] = minuss[n--];
}
}
for( i = 1 ; i <= m ; ++i )
is[pluss[i]] = true;
for( i = 1 ; i <= nr ; ++i )
if (is[i])
fout<<"+";
else
fout<<"-";
fout <<"\n";
return 0;
}