Cod sursa(job #69202)

Utilizator FlorianFlorian Marcu Florian Data 1 iulie 2007 20:41:06
Problema Semne Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 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;
                if(i%2==1) viz[i]=-1;
                s+=viz[i]*a[i];}
        }
void afisare()
        {
        long i;
        for(i=0;i<n;++i)
                if(viz[i]==-1) fprintf(g,"-");
                        else fprintf(g,"+");
        }
void afisare2()
        {
        long i;
        for(i=0;i<n;++i)
                if(viz[i]==1) fprintf(g,"-");
                        else fprintf(g,"+");
        }

void solve()
        {
        int ok=1;
        long 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;
        }