Pagini recente » Cod sursa (job #2687974) | Monitorul de evaluare | Istoria paginii runda/pregatire_oni2011_runda3 | Cod sursa (job #2007184) | Cod sursa (job #2513612)
#include <fstream>
#define input "semne.in"
#define output "semne.out"
#define NMAX 50005
using namespace std;
ifstream in(input);
ofstream out(output);
int sir[NMAX], semn[NMAX], N;
long long S, P;
void Read_Data()
{
in >> N >> S;
for(int i = 1; i <= N; i++)
in >> sir[i];
for(int i = 1; i <= N; i++)
if(P <= S) semn[i] = 1, P += sir[i];
else semn[i] = -1, P -= sir[i];
}
void Solve()
{
bool valid = true;
while(valid)
{
for(int i = 1; i <= N; i++)
if(P <= S)
{
if(semn[i] == -1) P += 2 * sir[i], semn[i] = 1;
if(P == S)
{
valid = false;
break;
}
}
else
{
if(semn[i] == 1) P -= 2 * sir[i], semn[i] = -1;
if(P == S)
{
valid = false;
break;
}
}
}
for(int i = 1; i <= N; i++)
if(semn[i] == -1) out << "-";
else out << "+";
}
int main()
{
Read_Data();
Solve();
return 0;
}