Cod sursa(job #3275613)

Utilizator luc3lexa_Alexandrescu Luca luc3lexa_ Data 11 februarie 2025 00:40:53
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define ll long long int

using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

const int nmax = 1e5+10;

ll n,k;
vector<ll> values(nmax,0);

ll binary_search(ll a,ll b,ll val){
	ll st = a,dr = b,ans;
	while(st <= dr){
		ll mij = (st+dr)/2;
		if(mij*(mij-1)/2 <= val){
			ans = mij;
			st = mij+1;
		}else{
			dr = mij-1;
		}
	};
	return ans;
};

int main(){
	fin >> n >> k;
	ll number = binary_search(1,n,k);
	ll remainder = k-(number*(number-1)/2);
	for(ll i = 1;i <= n-number; i++){
		values[i] = i;
	};
	for(ll i = n-number+1,j = 0; i <=n; i++,j++){
		values[i] = n-j;
	};
	if(remainder){
		values[n-number] = values[n-remainder+1];
		for(ll i = n-remainder+1; i <=n-1; i++){
			values[i] = values[i+1];
		};
		values[n] = n-number;
	};
	for(ll i = 1; i <=n; i++){
		fout << values[i] << " ";
	};
	return 0;
}