Pagini recente » Cod sursa (job #226952) | Diferente pentru home intre reviziile 655 si 656 | Cod sursa (job #1463889) | Cod sursa (job #2023174) | Cod sursa (job #1471544)
/*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;
}