Cod sursa(job #191306)

Utilizator cotofanaCotofana Cristian cotofana Data 25 mai 2008 22:17:08
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<stdio.h>   
#include<iostream>   
#include<stdlib.h>   
#define Max 50103   
FILE*f=fopen("semne.in","r");   
FILE*g=fopen("semne.out","w");   
long long s,suma,a[Max],n,minus[Max], plus[Max],p,k;   
char u[Max];   
void read()   
    {   
    fscanf(f,"%lld %lld",&n,&s);   
    for(int i=1;i<=n;++i)   
        {   
        fscanf(f,"%lld",&a[i]);   
        if(suma+a[i]<=s) u[i]='+',suma+=a[i],plus[++p]=i;   
        else suma-=a[i], u[i]='-',minus[++k]=i;   
        }   
    }   
int main()   
    {   
    read();   
    int i;   
    int x;   
    srand(time(0));   
    while(suma!=s)   
        {   
        if(suma<s)   
            {   
            x=rand()%k+1;   
            suma+=2*a[minus[x]];   
            plus[++p]=minus[x];   
            u[minus[x]]='+';   
            minus[x]=minus[k];   
            k--;   
            }   
        else  
            {   
            x=rand()%p+1;   
            suma-=2*a[plus[x]];   
            minus[++k]=plus[x];   
            u[plus[x]]='-';   
            plus[x]=plus[p];   
            --p;   
            }   
        }   
  
    for(i=1;i<=n;++i) fprintf(g,"%c",u[i]);   
  
    return 0;   
  
    }