Pagini recente » Cod sursa (job #2516) | Cod sursa (job #2868230) | Cod sursa (job #410467) | Cod sursa (job #2670356) | Cod sursa (job #3292978)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
vector <int> val, sterse;
int n, k, sol[100000 + 5];
void afis()
{
for ( int i = 0; i < val.size(); ++i )
fout << val[i] << " ";
fout << endl;
}
int main()
{
fin >> n >> k;
int poz;
long long Smax = n * ( n - 1) / 2, i;
for ( i = 1; i <= n; ++i )
val.push_back(i);
for ( poz = 1; poz <= n; ++poz )
{
i = max( 0LL, -Smax + (long long)val.size() + k - 1);
//i = min (i, (long long)val.size());
int cntSterse;
if ( lower_bound(sterse.begin(), sterse.end(), i) != sterse.end() )
cntSterse = lower_bound(sterse.begin(), sterse.end(), i) - sterse.begin() + 1;
i += cntSterse;
Smax -= ( (long long)val.size() - i - 1);
sol[poz] = val[i];
sterse.push_back(i);
// fout << " i = " << i << " Smax = " << Smax << endl;
// afis();
}
for ( i = 1; i<= n; ++i )
fout << sol[i] << " ";
return 0;
}