Pagini recente » Monitorul de evaluare | Cod sursa (job #1702247) | Cod sursa (job #723071) | Cod sursa (job #2046328) | Cod sursa (job #1471737)
/*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(true);
sum = (long long)sum - v[poz];
viz[poz] = 0;
poz = random(false);
sum = (long long)sum - v[poz];
viz[poz] = 1;
}
for(i=0; i<n2; ++i)
if(viz[i]) g << (i+1) << " ";
f.close();
g.close();
return 0;
}