Pagini recente » Cod sursa (job #172231) | Cod sursa (job #874047) | Cod sursa (job #3295958) | Cod sursa (job #1796054) | Cod sursa (job #466938)
Cod sursa(job #466938)
# include <algorithm>
using namespace std ;
const char FIN[] = "congr.in", FOU[] = "congr.out";
const int MAX = 600005;
# define x first
# define y second
pair < int, int > A[ MAX ] ;
int Sol [ MAX ] ;
int P ;
int main () {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf ( "%d", &P ) ;
for (int i = 1; i < P << 1; ++i) {
scanf ( "%d", &A[i].x ) , A[i].y = i;
}
int p = P << 1 , Int = 0, k = 0 ;
for (int i = 1, a = rand () % p; i <= P; ++i, a = rand () % p) {
Sol[ ++k ] = A[ ++a ].y ;
A[ a ].y = A[ --p ].y ;
Int += A[ Sol[ k ] ].x, Int %= P;
}
for ( int a = 0, b = 0 ; Int ; swap ( Sol[a] , A[b].y ) ) {
a = rand () % k , b = rand () % p ;
Int -= A[ Sol[ ++a ] ].x, Int += A[ A[ ++b ].y ].x , Int %= P;
}
for (int i = 1; i <= P; ++i)
printf ( "%d ", Sol[i] );
return 0;
}