Cod sursa(job #119290)
#include<fstream>
#include<cstdlb>
#include<ctime>
using namespace std;
long a[50003],plus[50003],minus[50004],n,S,poz[5000000],max=-11111244;
void citire()
{
ifstream fin("semne.in");
fin>>n>>S;
for (long i=1;i<n;i++)
{
fin>>a[i];
poz[a[i]]=i;
if (a[i]>max)
max=a[i];
}
fin.close();
}
void random()
{
//srand(time(0));
short ok=1;
while (ok)
{
long Sp=0;
long Sm=0;
memset(plus,0,sizeof(plus));
memset(minus,0,sizeof(minus));
for (long i=0;i<=n;i++){
for (long j=0;j<i;j++){
long aux=rand()%max;
if (plus[poz[aux]]==0)
{
plus[poz[aux]]=1;
Sp+=aux;
}
}
for (long y=0;y<n-i;y++)
{
long aus=rand()%max;
if (minus[poz[aus]]==0)
{
Sm-=aus;
minus[poz[aus]]=1;
}
}
}
if (Sp+Sm==S)
{
return ;
}
}
}
int main()
{
citire();
ofstream fout("semne.out");
for (long i=0;i<n;i++)
if (plus[i]==1)
fout<<"+";
else
fout<<"-";
fout<<"\n";
fout.close();
return 0;
}