Cod sursa(job #232707)

Utilizator alex23alexandru andronache alex23 Data 15 decembrie 2008 23:21:11
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#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;
 }