Cod sursa(job #2091024)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 19 decembrie 2017 01:05:06
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <algorithm>
#include <fstream>

using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
long long unsigned n,q;
long long unsigned a[150001],aux;
int main()
{
   fin>>n>>q;
   long long i,k;
   for(i=1;i<=n;i++)
    a[i]=i;
    for(k=1;k<=n;k++)
    if(k*(k-1)/2>=q) break;
    if(k*(k-1)/2==q) {
       // reverse(a+n-k+1,a+n);
        for(i=n-k+1;i<=(n+n-k+1)/2;i++)
         {aux=a[i];
         a[i]=a[n-(i-(n-k+1))];
         a[n-(i-(n-k+1))]=aux;}
    for(i=1;i<=n;i++)
     fout<<a[i]<<" ";
         }
    else
    {//reverse(a+n-k+1,a+n);
        for(i=n-k+1;i<=(n+n-k+1)/2;i++)
         {aux=a[i];
         a[i]=a[n-(i-(n-k+1))];
         a[n-(i-(n-k+1))]=aux;}
      //swap(a[n-k+1],a[n-k+1+k*(k-1)/2-q]);
         aux=a[n-k+1+k*(k-1)/2-q];
         for(i=n-k+1+k*(k-1)/2-q;i>=n-k+2;i--)
          a[i]=a[i-1];
         a[n-k+1]=aux;
    for(i=1;i<=n;i++)
     //fprintf(g,"%d ",a[i]);
      fout<<a[i]<<" ";
    }
    return 0;
}