Cod sursa(job #1471544)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 14 august 2015 12:34:15
Problema Congr Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
/*http://www.infoarena.ro/problema/congr*/
#include <fstream>
#include <ctime>
#include <cstdlib>
#define N 600002
using namespace std;

int n, n2, i, poz, v[N], sum;
bool viz[N];
int random(bool type)
{
    int poz;
    do
    {
        poz = rand() % n2;
    }while(viz[poz] != type);
    return poz;
}
int main()
{
    ifstream f("congr.in");
    ofstream g("congr.out");
    srand(time(NULL));
    f >> n;
    n2 = (n<<1) - 1;
    for(i=0; i<n2; ++i)
        f >> v[i];

    /*selectez n numere initiale*/
    for(i=0; i<n; ++i)
    {
        poz = random(false);
        viz[poz] = 1;
        sum += v[poz];
    }
    /*modific selectiile astfel incat sa obtin o suma multiplu de n*/
    while(sum % n)
    {
        poz = random(true);
        sum -= v[poz];
        viz[poz] = 0;
        poz = random(false);
        sum += v[poz];
        viz[poz] = 1;
    }
    for(i=0; i<n2; ++i)
        if(viz[i]) g << v[i] << " ";
    f.close();
    g.close();
    return 0;
}