Cod sursa(job #1045631)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 1 decembrie 2013 20:22:22
Problema Order Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("order.in");
ofstream g("order.out");
int v[30001],bat[200],i,j,n,rad,nr,aux,term;
int main()
{
    f>>n;
    rad=sqrt(n);
    nr=n/rad;
    for(i=1;i<=n;i++)
        v[i]=i;
    for(i=1;i<=nr;i++)
       bat[i]=rad;
    aux=nr*rad;
    if(aux!=n)
       bat[++nr]=n-aux;
  //  for(i=1;i<=nr;i++)
   //     g<<bat[i]<<" ";
   // g<<"jghep"<<'\n';
    i=1;j=0;
    while(j<n)
      {
        j++;
        term=1;
        if(j==1)
            term--;
        while(term<=j)
        {
         term++;i++;
         if(i>n)
          {
            i-=n;
          }
 //////////////////////////////////   Nu mai aliniem
              aux=(i-1)/rad+1;
              if(v[i]!=-1)
                {if(term==j)
                  {
                  g<<v[i]<<" ";
                  v[i]=-1;
                  bat[aux]--;
                  }
                }
              else
                {

                  while(!(bat[aux]))
                    {aux++;
                     if(aux>nr)
                        aux-=nr;
                    }
                  i=rad*(aux-1)+1;
                  while(v[i]==-1)
                    i++;
                  if(term==j)
                    {g<<v[i]<<" ";
                      v[i]=-1;
                    }
                }

        }
/////////////////////////////////    Nu mai aliniem
      }
   f.close();g.close();
   return 0;
}