Cod sursa(job #1045592)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 1 decembrie 2013 19:30:18
Problema Order Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 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;
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;
    i=1;j=0;
    while(j<n)
      {
        j++;
        i+=j;
        if(i>n)
          {
            i-=n;
          }
 //////////////////////////////////   Nu mai aliniem
              aux=(i-1)/rad+1;
              if(v[i]!=-1)
                {
                  g<<"hap1 ";
                  g<<v[i]<<" ";
                  v[i]=-1;
                  bat[aux]--;
                }
              else
                {
                  g<<"hap2 ";
                  while(!(bat[aux]))
                    {aux++;
                     if(aux>nr)
                        aux-=nr;
                    }
                  i=rad*(aux-1)+1;
                  while(v[i]==-1)
                    i++;
                  g<<v[i]<<" ";
                  v[i]=-1;
                }
/////////////////////////////////    Nu mai aliniem
      }
   f.close();g.close();
   return 0;
}