Cod sursa(job #3275612)

Utilizator luc3lexa_Alexandrescu Luca luc3lexa_ Data 11 februarie 2025 00:31:04
Problema Farfurii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");

const int nmax = 1e5+10;

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

int binary_search(int a,int b,int val){
	int st = a,dr = b,ans;
	while(st <= dr){
		int 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;
	int number = binary_search(1,n,k);
	int remainder = k-(number*(number-1)/2);
	for(int i = 1;i <= n-number; i++){
		values[i] = i;
	};
	for(int i = n-number+1,j = 0; i <=n; i++,j++){
		values[i] = n-j;
	};
	if(remainder){
		values[n-number] = values[n-remainder+1];
		for(int i = n-remainder+1; i <=n-1; i++){
			values[i] = values[i+1];
		};
		values[n] = n-number;
	};
	for(int i = 1; i <=n; i++){
		fout << values[i] << " ";
	};
	return 0;
}