Cod sursa(job #467661)

Utilizator rusu_raduRusu Radu rusu_radu Data 29 iunie 2010 20:51:42
Problema Congr Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <cassert>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define Nmax 300005
#define InFile "congr.in"
#define OutFile "congr.out"

using namespace std;

int p, sum;
int T[2*Nmax], ind[2*Nmax];

void read();
void solve();
void write();

int main()
{
  assert (freopen (InFile, "r", stdin));
  assert (freopen (OutFile, "w", stdout));
  read();
  solve();
  write();
  return 0;
}

void read()
{
  int i, a;
  scanf ("%d\n", &p);
  for (i=0; i<2*p-1; i++)
  {
    scanf ("%d\n", &a);
    T[i]=a%p; ind[i]=i;
  }
}

void solve()
{
  int i, pz1, pz2;
  for (i=0; i<p; i++)
    sum+=T[i];
  srand (time(NULL));
  while (sum%p)
  {
    pz2=rand()%(p-2);
    pz2+=p;
    pz1=rand()%p;
    sum-=T[pz1],sum+=T[pz2];
    swap (T[pz1], T[pz2]);
    swap (ind[pz1], ind[pz2]);
  }
}

void write()
{
  int i;
  for (i=0; i<p; i++)
    printf ("%d ", ind[i]+1);
  printf ("\n");
}