Cod sursa(job #968834)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 2 iulie 2013 20:57:19
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#define dim 100009
using namespace std;
int n,l,k,m,a[dim],b[dim],j;
int caut(int st,int dr,int n)
{
    int mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(mij*(mij+1)/2==n)
        return n;
        else
        if(mij*(mij+1)/2<n&&(mij+1)*(mij+2)/2>n)
        return mij+1;
        else
        if(mij*(mij+1)/2<n)
        st=mij+1;
        else
        dr=mij-1;
    }
}
int main()
{
    ifstream f("farfurii.in");
    ofstream g("farfurii.out");
    f>>n>>m;
    for(int i=1;i<=n;i++)
    b[i]=0;
    k=caut(1,n+1,m);
    j=(k*(k+1))/2-m;
    l=n;
    for(int i=k;i>0;i--)
    if (i!=j)
    {
        a[l]=n-i;
        l--;
    }
    a[l]=n;
    if (j>0)
    {
        l--;
        a[l]=n-j;
    }
    for(int i=1;i<l;i++)
    a[i]=i;
    for(int i=1;i<=n;i++)
    g<<a[i]<<" ";
}