Cod sursa(job #1003050)

Utilizator diana97Diana Ghinea diana97 Data 29 septembrie 2013 17:58:14
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream f ("farfurii.in");
ofstream g ("farfurii.out");

int n, k;

void citeste ()
{
    f>>n>>k;
}

void rezolva ()
{
    int m, p, x, y;
    x=log2(n*1.0);
    p=pow(2, x+1);
    for (m=0; p>0; p/=2)
            if (m+p<=n && (m+p)*(m+p-1)<=2*k) m=m+p;
    k=k-m*(m-1)/2;
    if (k==0)
    {
        x=n-m;
        for (int i=1; i<=x; i++) g<<i<<' ';
        for (int i=n; i>x; i--) g<<i<<' ';
        g<<'\n';
    }
    else
    {
        k=m-k; //x=n-m; y=n-k;
        m++;
        x=n-m; y=n-k;
        for (int i=1; i<=x; i++) g<<i<<' ';
        g<<y<<' ';
        for (int i=n; i>y; i--) g<<i<<' ';
        for (int i=y-1; i>x; i--) g<<i<<' ';
        g<<'\n';
    }
}

int main ()
{
    citeste ();
    rezolva ();
    return 0;
}