Cod sursa(job #1336351)

Utilizator maribMarilena Bescuca marib Data 7 februarie 2015 17:12:27
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <cmath>

using namespace std;

long int n, p, x, de_scazut, dif, nr;

short afis[100001];

int main()
{
    ifstream in("farfurii.in");
    ofstream out("farfurii.out");
    in>>n>>p;
    x=sqrt(2*p);
    if(x*(x+1)/2>=p)
    {
        x++;
    }
    else x+=2;
    nr=x*(x-1)/2;
    dif=nr-p;
    de_scazut=x-1;
    for(int i=1; i<=n-x; ++i)
    {
        out<<i<<" ";
        afis[i]=1;
    }
    while(dif!=0)
    {
        if(dif>=de_scazut)
        {
            out<<n-de_scazut<<" ";
            afis[n-de_scazut]=1;
            dif-=de_scazut;
            de_scazut--;
        }
        else
        {
            out<<n-dif<<" ";
            afis[n-dif]=1;
            dif=0;
        }
    }
    for(int i=n; i>=1; --i)
        if(afis[i]==0)
            out<<i<<" ";
    out<<"\n";
    in.close();
    out.close();
    return 0;
}