Cod sursa(job #843908)

Utilizator Theorytheo .c Theory Data 28 decembrie 2012 16:28:51
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#include<vector>
using namespace std;

#define NMAX 600008

ifstream fin("congr.in");
FILE *fout = fopen("congr.out", "wt");
const int SIZE = 9 * NMAX;
char parse[SIZE], *p;
int b[NMAX], a[NMAX], N;
long long sum;
vector <int> A;
vector <int> nA;

int get_x(){

    int result = 0;
    while(*p && !(*p <= '9' && *p >= '0')) ++p;

    while( *p >= '0' && *p <= '9')  result = result * 10 + (*p -'0') , p++;
    return result;


}
void read(){
    fin >>N;
    fin.getline(parse, SIZE, '\0');
    p = parse;
    for(int i = 1; i < 2 * N; i++){
        a[i] = get_x();
        a[i] %= N;
        b[i] = i;
        if(i <= N){
            sum = (sum + a[i] );
            A.push_back(i);
        }
        else
            nA.push_back(i);

    }
}
int main(){
    read();
    srand(time(0));

    while(sum % N){
        int i = rand() % N;
        int j = rand() % (N - 1);
        sum = sum + a[nA[j]] - a[A[i]];
        swap(nA[j], A[i]);
    }
    for(int i = 0; i < N; i++)
        fprintf(fout , "%d ", A[i]);
    return 0;

}