Pagini recente » Cod sursa (job #1086808) | Cod sursa (job #2556079) | Cod sursa (job #2197395) | Cod sursa (job #2328126) | Cod sursa (job #232707)
Cod sursa(job #232707)
#include <iostream>
#include <vector>
using namespace std;
vector<int> a;
int n;
FILE *f = fopen("stive.in", "r"), *g = fopen("stive.out", "w");
int main()
{
fscanf(f, "%d", &n);
fclose(f);
a.push_back(0);
for (int i = 1; i <= n; i++)
a.push_back(i);
// numarul de mutari
int MIN = 0, j = 1;
while (j <= n)
{MIN++;
j *= 2;
}
fprintf(g, "%d\n", MIN);
int max = n;
while(max > 0)
{int m = max / 2 + max % 2;
int nr = 0;
for (int i = 1; i <= n; i++)
if (a[i] >= m) nr++;
fprintf(g, "%d ", nr);
for (int i = 1; i <= n; i++)
if (a[i] >= m) {fprintf(g, "%d ", i);
a[i] = a[i] - m;
}
fprintf(g, "%d\n", m);
max = 0;
for (int i = 1; i <= n; i++)
if (max < a[i]) max = a[i];
}
fclose(g);
return 0;
}