Pagini recente » Cod sursa (job #1763103) | Cod sursa (job #878952) | Cod sursa (job #824118) | Cod sursa (job #127463) | Cod sursa (job #1395280)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define DMAX 600010
using namespace std;
struct pack{
int val, pozitie;
};
struct pack v[DMAX];
int p;
unsigned long long int sum;
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)
{
v[i].pozitie=i;
fscanf(fin, "%d", &v[i].val);
}
fclose(fin);
}
void rez()
{
int i, poz, poz2;
struct pack aux;
for (i=1; i<=p; ++i)
sum+=v[i].val;
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].val;
sum+=v[poz].val;
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 ", v[i].pozitie);
fprintf(fout, "\n");
fclose(fout);
return;
}