Pagini recente » Cod sursa (job #2336150) | Cod sursa (job #478469) | Cod sursa (job #2821851) | Cod sursa (job #1644339) | Cod sursa (job #2831069)
#include <fstream>
using namespace std;
const int N = 16000;
int v[N];
void permavg(int v[], int n)
{
if (n == 1)
{
v[0] = 1;
return;
}
int m = n / 2;///nr. de elemente pare
permavg(v, m);///obtin o permutare valida de ordinul m=n/2
for (int i = 0; i < m; i++)
{
v[i] *= 2;///obtin numerele pare din {1,2,,..,n}, care verifica propr: v[k]!=(v[i]+v[j])/2, pentru i<k<j
}
permavg(v + m, n - m);///obtin o permutare valida de ordinul n-m
for (int i = m; i < n; i++)
{
v[i] = 2 * v[i] - 1;///obtin numerele impare din {1,2,,..,n}, care verifica propr...
}
///cum media dintre un v[i] cu 0<=i<m si un v[j] cu m<=j<n NU e numar natural => am obtinut o permutare valida
}
int main()
{
int n;
ifstream in("permavg.in");
ofstream out("permavg.out");
in >> n;
in.close();
permavg(v, n);
for (int i = 0; i < n; i++)
{
out << v[i] << " ";
}
out.close();
return 0;
}