Cod sursa(job #2492033)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 13 noiembrie 2019 20:46:58
Problema Semne Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
struct num
{
    long long a,b;
}p[50005],m[50005];
char st[50005];
long long n,sum,u1,u2,i,s,x;
int main()
{
  ifstream f("semne.in");
  ofstream g("semne.out");
  f>>n>>sum;
  srand(time(NULL));
  for(i=1;i<=n;i++)
  {
      f>>p[i].a;
      p[i].b=i;
      s+=p[i].a;
  }
  u1=n;u2=0;
  while(s!=sum)
  {
      if(s>sum)
      {
          x=rand()%u1+1;
          u2++;
          s-=2*p[x].a;
          m[u2]=p[x];
          p[x]=p[u1];
          u1--;
      }
      else
      {
          x=rand()%u2+1;
          u1++;
          s+=2*m[x].a;
          p[u1]=m[x];
          m[x]=m[u2];
          u2--;
      }
  }
  for(i=1;i<=u1;i++)
  {
      st[p[i].b]='+';
  }
  for(i=1;i<=u2;i++)
  {
      st[m[i].b]='-';
  }
  for(i=1;i<=n;i++) g<<st[i];
    return 0;
}