Cod sursa(job #2164220)

Utilizator patcasrarespatcas rares danut patcasrares Data 12 martie 2018 22:15:27
Problema Semne Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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];
}