Cod sursa(job #1471739)

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

long long 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 = (long long)sum + v[poz];
    }
    /*modific selectiile astfel incat sa obtin o suma multiplu de n*/
    while(sum % n)
    {
        poz = random(false);
        sum = (long long)sum + v[poz];
        viz[poz] = 1;

        poz = random(true);
        sum = (long long)sum - v[poz];
        viz[poz] = 0;
    }
    for(i=0; i<n2; ++i)
        if(viz[i]) g << (i+1) << " ";
    f.close();
    g.close();
    return 0;
}