Cod sursa(job #1086868)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 18 ianuarie 2014 17:08:22
Problema Congr Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <time.h>
#include <stdlib.h>

using namespace std;

const char infile[] = "congr.in";
const char outfile[] = "congr.out";

ifstream fin(infile);
ofstream fout(outfile);

const int MAXN = 300005;
const int oo = 0x3f3f3f3f;

typedef vector<int> Graph[MAXN];
typedef vector<int> :: iterator It;

const inline int min(const int &a, const int &b) { if( a > b ) return b;   return a; }
const inline int max(const int &a, const int &b) { if( a < b ) return b;   return a; }
const inline void Get_min(int &a, const int b)    { if( a > b ) a = b; }
const inline void Get_max(int &a, const int b)    { if( a < b ) a = b; }

int N, v[2*MAXN], ind[2*MAXN];
long long sum;

int main() {
    srand(time(NULL));
    fin >> N;
    int M = (N << 1);
    for(int i = 1 ; i < M ; ++ i) {
        fin >> v[i];
        if( i <= N )
            sum += v[i];
        ind[i] = i;
    }
    int ind1, ind2;
    while(sum % N) {
        ind1 = 1 + rand() % N;
        ind2 = N + 1 + rand() % (N - 1);
        sum = sum - v[ind1] + v[ind2];
        swap(v[ind1], v[ind2]);
        swap(ind[ind1], ind[ind2]);
    }
    for(int i = 1 ; i <= N ; ++ i)
        fout << ind[i] << ' ';
    fout << "\n";
    fin.close();
    fout.close();
    return 0;
}