Cod sursa(job #3244813)

Utilizator Sasha_12454Eric Paturan Sasha_12454 Data 26 septembrie 2024 17:19:06
Problema Farfurii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>

const std :: string FILENAME = "farfurii";

std :: ifstream f (FILENAME + ".in");

std :: ofstream g (FILENAME + ".out");

const int NMAX = 1e5 + 5;

int n;

int k;

int ans[NMAX];

int arb[NMAX];

void update(int x)
{
    while(x <= n)
    {
        arb[x] ++;

        x += (x & (-x));
    }
}

int cb()
{
    int ret = 0;

    for(int i = (1 << 20); i > 0; i /= 2)
    {
        if(ret + i <= n && ans[ret + i] == 0)
        {
            ret += i;
        }
    }

    return ret;
}

int main()
{

    f >> n >> k;

    for(int i = 1; i <= n; i ++)
    {
        if((n - i) * (n - i - 1) / 2 >= k)// elemntul actual nu trb mutat trec la urm
        {
            ans[i] = i;
        }
        else
        {
            k -= (n - i + 1) * (n - i) / 2;

            k = abs(k);//am atatea in plus

            ans[i] = n - k;

            int cnt = n;

            for(int j = i + 1; j <= n; j ++)
            {
                if(cnt == n - k)
                {
                    cnt --;
                }

                ans[j] = cnt --;
            }

            break;
        }
    }

    for(int i = 1; i <= n; i ++)
    {
        g << ans[i] << " ";
    }

    return 0;
}