Cod sursa(job #69098)

Utilizator FlorianFlorian Marcu Florian Data 1 iulie 2007 11:31:37
Problema Semne Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("semne.in","r");
FILE*g=fopen("semne.out","w");
long long a[50009],viz[50009],S,n,s;
void read()
        {
        long i;
        fscanf(f,"%lld %lld",&n,&S);
        for(i=0;i<n;++i) {fscanf(f,"%lld",&a[i]); viz[i]=1;s+=a[i];}
        }
void afisare()
        {
        long x,i;
        for(i=0;i<n;++i)
                if(viz[i]==-1) fprintf(g,"-");
                        else fprintf(g,"+");
        }
void afisare2()
        {
        long x,i;
        for(i=0;i<n;++i)
                if(viz[i]==1) fprintf(g,"-");
                        else fprintf(g,"+");
        }

void solve()
        {
        int ok=1;
        long x;
        while(ok)
                {
                x=rand()%n;
                viz[x]=-viz[x];
                s+=2*viz[x]*a[x];
                if(S==s)
                        {
                        afisare();
                        ok=0;
                        break;
                        }
                 else if (S==-s)
                        {
                        afisare2();
                        break;
                        }
                }
       }
int main()
        {
        read();
        solve();
        return 0;
        }