Cod sursa(job #1395300)

Utilizator Lucian_BosinceanuLucian-Andrei Bosinceanu Lucian_Bosinceanu Data 21 martie 2015 10:49:13
Problema Congr Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define DMAX 300005

using namespace std;

FILE*fin=fopen("congr.in","r");
FILE*fout=fopen("congr.out","w");

int p;
int v[2*DMAX];
int index[2*DMAX];

long long int suma;

void citire();
void rezolvare();
int verif();
void swap(int a,int b);
void afisare();

int main()
{
srand(time(NULL));
citire();
rezolvare();
afisare();
    return 0;
}

void citire()
{
int i;
fscanf(fin,"%d",&p);
for (i=1;i<=2*p-1;i++)
     {fscanf(fin,"%d",&v[i]);
      index[i]=i;
     }
}

void rezolvare()
{
int i,poz1,poz2;
for (i=1;i<=p;i++) suma+=v[i];
while ( suma%p!=0 )
      {
       poz1=rand()%(p)+1;
       poz2=p+ rand()%(p-1)+1;
       suma=suma+v[poz2]-v[poz1];
       swap(poz1,poz2);
      }
}

void swap(int a,int b)
{
int aux;
aux=v[a]; v[a]=v[b]; v[b]=aux;
aux=index[a]; index[a]=index[b]; index[b]=aux;
}

void afisare()
{
int i;
for (i=1;i<=p;i++)
    fprintf(fout,"%d ",index[i]);
fprintf(fout,"\n");
}