Cod sursa(job #2314691)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 8 ianuarie 2019 22:55:50
Problema Farfurii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#define nmax 100001

using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

int main()
{ int n,k;
  fin>>n>>k;
  int m;
  int delta=1+8*k;
  delta=sqrt(delta);
  m=(1+delta)/2;

  int i;
  if(k==((m-1)*m)/2)
     { for(i=1; i<=n-m; i++)
            fout<<i<<" ";
        for(i=n; i>=n-m+1; i--)
             fout<<i<<" ";
        return 0;
     }
  else
     if(k>((m-1)*m)/2)
        { int v[nmax],ct=0;
          for(i=1; i<=n-m-1; i++)
              v[++ct]=i;
          for(i=n; i>=n-m; i--)
               v[++ct]=i;
          int poz1,poz2;
          for(i=1; i<=n; i++)
             if(v[i]==n) {poz1=i; break;}
          for(i=1; i<=n; i++)
             if(v[i]==(n-((m+1)*m/2-k)))
                {poz2=i; break;}
          for(i=poz2; i>=poz1+1; i--)
              swap(v[i],v[i-1]);
          for(i=1; i<=n;i++) fout<<v[i]<<" ";
        }


    return 0;
}