Cod sursa(job #1167787)

Utilizator usermeBogdan Cretu userme Data 5 aprilie 2014 22:22:21
Problema Semne Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>

using namespace std;

FILE*f=fopen("semne.in","r");
FILE*h=fopen("semne.out","w");

int semn[50001];

int v[50001];

int main(){
    int n,sum,s=0;
    fscanf(f,"%d%d",&n,&sum);
    for ( int i=1;i<=n;++i ){
        semn[i]=1;
        fscanf(f,"%d",&v[i]);
        if ( i%2==0 )s+=v[i];
        else {
            s-=v[i];
            semn[i]=-1;
        }
    }
    srand(time(NULL));
    while ( s!=sum ){
        if ( s>sum ){
            int x=rand()%n+1;
            while  ( semn[x]==-1 )
                x=rand()%n+1;
            s-=2*v[x];
            semn[x]=-1;
            continue;
        }
        int x=rand()%n+1;
        while  ( semn[x]==1 )
            x=rand()%n+1;
        s+=2*v[x];
        semn[x]=1;
    }
    for ( int i=1;i<=n;++i ){
        if ( semn[i]==1 )
            fprintf(h,"+");
        else fprintf(h,"-");
    }
    return 0;
}