Pagini recente » Cod sursa (job #2017190) | Cod sursa (job #138112) | Cod sursa (job #1933736) | Cod sursa (job #1992693) | Cod sursa (job #1689529)
#include<fstream>
#include<cstdlib>
#include<ctime>
#define DIM 50005
using namespace std;
ifstream fin("semne.in");
ofstream fout("semne.out");
int n, v[DIM], H1[DIM], H2[DIM], k1, k2;
char f[DIM];
long long sum, s;
int main(){
fin >> n >> sum;
s = 0;
for( int i = 1; i <= n; i++ ){
fin >> v[i];
if( s < sum ){
s += v[i];
H1[++k1] = i;
}else{
s -= v[i];
H2[++k2] = i;
}
}
srand( time( NULL ) );
while( s != sum ){
if( s > sum ){
int p = rand() % k1 + 1;
s -= 2 * v[ H1[p] ];
swap( H1[p], H1[k1] );
H2[++k2] = H1[k1];
H1[k1] = 0;
k1--;
}else{
int p = rand() % k2 + 1;
s += 2 * v[ H2[p] ];
swap( H2[p], H2[k2] );
H1[++k1] = H2[k2];
H2[k2] = 0;
k2--;
}
}
for( int i = 1; i <= k1; i++ ){
f[ H1[i] ] = 1;;
}
for( int i = 1; i <= n; i++ ){
if( f[i] == 1 ){
fout << "+";
}else{
fout << "-";
}
}
return 0;
}