Pagini recente » Cod sursa (job #879346) | Cod sursa (job #2902942)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
int nr_farfurii, nr_tacamuri;
int binarysearch(int l, int r)
{
int m = (r + l) / 2;
if ((m * m - 1) / 2 > nr_tacamuri)
{
if (((m - 1) * (m - 2) / 2) < nr_tacamuri)
return m;
return binarysearch(l, m);
}
else
return binarysearch(m+1, r);
}
int main()
{
ifstream f("farfurii.in");
ofstream g("farfurii.out");
f >> nr_farfurii >> nr_tacamuri;
int i;
int farfurii_necesare = binarysearch(1, nr_farfurii); // atatea farfurii vom folosi pt inversiuni, restul le asezam crescator
for (i = 1; i <= nr_farfurii - farfurii_necesare; i++)
g << i << " ";
int dif = nr_tacamuri - ((farfurii_necesare - 1) * (farfurii_necesare - 2) / 2);
int copy = i;
g << i + dif << " ";
for (i = nr_farfurii; i > copy + dif; i--)
g << i << " ";
for (i = copy + dif- 1; i >= copy ; i--)
g << i << " ";
}