Cod sursa(job #466938)

Utilizator SpiderManSimoiu Robert SpiderMan Data 27 iunie 2010 22:55:23
Problema Congr Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
# 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;

}