Pagini recente » Cod sursa (job #1739115) | Cod sursa (job #1100358) | Cod sursa (job #2872123) | Cod sursa (job #218126) | Cod sursa (job #1395257)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define DMAX 600010
using namespace std;
int p, v[DMAX], sum;
int pozitii[DMAX];
void citire();
void rez();
void afisare();
int main()
{
srand(time(NULL));
citire();
rez();
afisare();
return 0;
}
void citire()
{
int i;
FILE*fin=fopen ("congr.in", "r");
fscanf(fin, "%d", &p);
for (i=1; i<2*p; ++i)
{
pozitii[i]=i;
fscanf(fin, "%d", &v[i]);
}
fclose(fin);
}
void rez()
{
int i, poz, poz2, aux;
for (i=1; i<=p; ++i)
sum+=v[i];
if (sum%p==0)//awsum
return;
while (1)
{
//aleg o pozitie random
poz=rand()%p+1;
poz2=rand()%p+(2*p-1)-(p+1)+1;
aux=v[poz];
v[poz]=v[poz2];
v[poz2]=aux;
sum-=v[poz2];
sum+=v[poz];
aux=pozitii[poz];
pozitii[poz]=pozitii[poz2];
pozitii[poz2]=aux;
if (sum%p==0) break;
}
return;
}
void afisare()
{
int i;
FILE*fout=fopen ("congr.out", "w");
for (i=1; i<=p; ++i)
fprintf(fout, "%d ", pozitii[i]);
fprintf(fout, "\n");
fclose(fout);
return;
}