Cod sursa(job #923572)
| Utilizator | Data | 23 martie 2013 17:59:44 | |
|---|---|---|---|
| Problema | Congr | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.99 kb |
#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;
}
