Cod sursa(job #2754224)

Utilizator SofeiAndreiSofei Andrei SofeiAndrei Data 25 mai 2021 14:54:42
Problema Farfurii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("farfurii.in");
ofstream g("farfurii.out");
using namespace std;
int n,k,nr,numar_special;
int main ()
{
    cin>>n>>k;
    if(n==1){
        g<<1;
    }
    else{
        nr=1;
        while(nr*(nr+1)/2<=k){
            nr++;
        }
        //nr maxim de numere ce pot fi puse descrescator(suma lui gauss)
        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{
            //k>nr maxim de numere ce pot fi puse descrescator
            //trebuie sa punem un numar care sa fie mai mare decat fix k-nr*(nr-1)/2 numere din dreapta
            for(int i=1;i<n-nr;i++){
                g<<i<<" ";
            }
            numar_special=n-nr+k-(nr*(nr-1)/2);
            g<<numar_special<<" ";
            for(int i=n;i>=n-nr;i--){
                if(i!=numar_special){//sa nu punem numarul special de 2 ori
                    g<<i<<" ";
                }
            }
        }
    }
}