Pagini recente » Cod sursa (job #1801050) | Cod sursa (job #2236343) | Monitorul de evaluare | Cod sursa (job #2759995) | Cod sursa (job #923577)
Cod sursa(job #923577)
#include <cstdio>
#include <cstdlib>
#include <ctime>
const int MAX_SIZE(300000 << 1);
int v [MAX_SIZE];
int v2 [MAX_SIZE];
int result [MAX_SIZE];
long long sum;
int p, p2;
inline void read (void)
{
std::freopen("congr.in","r",stdin);
std::scanf("%d",&p);
p2 = (p << 1) - 1;
for (int i(0) ; i < p2 ; ++i)
std::scanf("%d",&v[i]);
std::fclose(stdin);
}
inline void print (void)
{
std::freopen("congr.out","w",stdout);
for (int i(0) ; i < p ; ++i)
std::printf("%d ",result[i] + 1);
std::putchar('\n');
std::fclose(stdout);
}
inline void swap (int &a, int &b)
{
int temp(a);
a = b;
b = temp;
}
inline void compute (void)
{
int i, j;
for (i = 0 ; i < p ; ++i)
{
result[i] = i;
sum += v[i];
}
p2 -= p;
for (i = 0, j = p ; i < p2 ; ++i, ++j)
v2[i] = j;
while (sum % p)
{
i = std::rand() % p;
j = std::rand() % p2;
sum -= v[result[i]];
sum += v[v2[j]];
swap(result[i],v2[j]);
}
}
int main (void)
{
std::srand(std::time(0));
read();
compute();
print();
return 0;
}