Pagini recente » Cod sursa (job #2731675) | Cod sursa (job #1747662) | Cod sursa (job #1090813) | Cod sursa (job #1579441) | Cod sursa (job #2904717)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("farfurii.in");
ofstream fout("farfurii.out");
int main()
{
long long i, nr_farf, nr_tacam, farf=0, comp=0;
// conteaza cum imi asez anumite farfurii astfel incat sa-mi asez toate tacamurile
fin>>nr_farf>>nr_tacam;
// descopar minimul de farfurii care mi-ar putea acoperii nr de tacamuri
// fiindca imi trebie un minim lexicografic la final, deci voi duce farfuriile mari catre final cat sa-mi asigur nr de tacamuri
// am combinari de n luate cate 2 care sa acoper nr_tacamuri
while(farf*(farf-1)>>1 <= nr_tacam)
farf++;
// in acest moment stiu ce pot lua ca bucata strict crecatoare, de farfurii si le afisez
for(i = 1; i <= nr_farf -farf ; ++i)
fout<<i<<' ';
comp = (farf * (farf - 1) >>1) - nr_tacam;
fout<< nr_farf - comp << ' ';
for(i = nr_farf; i >= nr_farf - farf + 1; --i)
if(i != nr_farf - comp)
fout<<i<<' ';
return 0;
}