Cod sursa(job #1149746)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 22 martie 2014 11:10:11
Problema Congr Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>

using namespace std;

int p;
long long sum;
int v[600005];
int poz[600005];

int random2();
void schimba(int, int);

int main()
{
    freopen("congr.in", "r", stdin);
    freopen("congr.out", "w", stdout);

    srand(time(NULL));

    scanf("%d",&p);
    for (int i = 1; i <= p; ++i)
    {
        scanf("%d", &v[i]);
        poz[i] = i;
        sum += (long long)v[i];
    }
    for (int i = p+1; i < (p<<1); ++i)
    {
        scanf("%d", &v[i]);
        poz[i] = i;
    }
    int i, j;
    while (sum % p)
    {
        i = random2() % p + 1;
        j = random2() % p + 1 + p;
        if (j == 2*p) --j;
        schimba(i, j);
    }

    for (i = 1; i <= p; ++i)
        printf("%d ", poz[i]);
    return 0;
}
void schimba (int i, int j)
{
    sum = sum + v[j] - v[i];
    swap(poz[i], poz[j]);
    swap(v[i], v[j]);

}

int random2()
{
    return abs(((rand()*rand())%9901) * (rand() % 11399) + rand() %2);
}