Pagini recente » Cod sursa (job #2209517) | Cod sursa (job #1865365) | Cod sursa (job #2609043) | Borderou de evaluare (job #2023654) | Cod sursa (job #2508676)
using namespace std;
#include<iostream>
#include<fstream>
int n, k;
int v[100001];
struct suma{
long long sum;
int sg;
} s;
suma sumaGaussmax(int k) {
suma s = {0,1};
while (s.sum+s.sg<k) {
s.sum += s.sg;
s.sg++;
}
s.sum+=s.sg;
return s;
}
int main() {
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
fin >> n >> k;
for (int i = 1; i<=n; i++) {
v[i] = i;
}
if (k == 0) {
for (int i = 1; i<=n; i++) {
fout << v[i] << " ";
}
return 0;
}
s = sumaGaussmax(k);
// cout << s.sum << " " << s.sg << endl;
for (int i = n-s.sg; i<=n-s.sg+s.sg/2; i++) {
swap(v[i], v[(n+n-s.sg)-i]);
}
// for (int i = 1; i<=n; i++) {
// cout << v[i] << " ";
// }
int diff = s.sum-k;
//cout << endl << diff;
if (diff == 0) {
for (int i = 1; i<=n; i++) {
fout << v[i] << " ";
}
return 0;
}
int poz = n-s.sg+diff;
// cout << endl << poz;
for (int i = 1; i<=n-s.sg-1; i++) {
fout << v[i] << " ";
}
fout << v[poz] << " ";
for (int i = n-s.sg; i<poz; i++) {
fout << v[i] << " ";
}
for (int i = poz+1; i<=n; i++) {
fout << v[i] << " ";
}
fin.close();
fout.close();
return 0;
}