Pagini recente » Cod sursa (job #617483) | Cod sursa (job #1831368) | Cod sursa (job #1836950) | Cod sursa (job #2774737) | Cod sursa (job #2754759)
#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<<" ";
}
}
}
}
}
}