Cod sursa(job #2754758)

Utilizator lalalaura_02Udroiu Laura-Ioana lalalaura_02 Data 26 mai 2021 15:12:49
Problema Farfurii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <bits/stdc++.h>

using namespace std;

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

int main ()
{
    int n,k,nr,nr2;
    f>>n>>k;
    if(n==1)
    {
        g<<1;
    }
    else
    {
        if(k==0)
        {
            for(int i=1; i<=n; i++)
            {
                g<<i<<" ";
            }
        }
        else
        {
            nr=1;
            while(nr*(nr+1)/2<=k)
            {
                nr++;
            }
            //suma lui gauss reprezinta numarul maxim de fardurii care pot fi puse
            if(nr*(nr-1)/2==k)
            {
                for(int i=1; i<=n-nr; i++)
                {
                    g<<i<<" ";
                }
                for(int i=n; i>n-nr; i--)
                {
                    g<<i<<" ";
                }
            }
            else
            {
                //trebuie sa gasim cel mai mic numar mai mare decat k-nr*(n-1)/2 numere
                for(int i=1; i<n-nr; i++)
                {
                    g<<i<<" ";
                }
                nr2=n-nr+k-(nr*(nr-1)/2);
                g<<nr2<<" ";
                for(int i=n; i>=n-nr; i--)
                {
                    if(i!=nr2) //astfel verificam ca numarul n a fost adaugat deja
                    {
                        g<<i<<" ";
                    }
                }
            }
        }
    }
}