Pagini recente » Cod sursa (job #400875) | Borderou de evaluare (job #231330) | Cod sursa (job #1400222) | Cod sursa (job #3221965) | Cod sursa (job #2164281)
#include<fstream>
#include<queue>
#define x first
#define y second
#define DN 50005
using namespace std;
ifstream fin("semne.in");
ofstream fout("semne.out");
int n,a[DN],t,poz;
long long s,sum;
char r[DN];
queue<pair<int,int> >q1;
queue<pair<int,int> >q2;
int main()
{
fin>>n>>s;
for(int i=1;i<=n;i++)
{
fin>>a[i];
sum+=a[i];
r[i]='+';
q1.push({a[i],i});
}
while(sum!=s)
{
if(sum>s)
{
t=q1.front().x;
poz=q1.front().y;
q1.pop();
sum-=2*t;
r[poz]='-';
q2.push({t,poz});
}
else
{
t=q2.front().x;
poz=q2.front().y;
q2.pop();
sum+=2*t;
r[poz]='+';
q1.push({t,poz});
}
}
for(int i=1;i<=n;i++)
fout<<r[i];
}