Mai intai trebuie sa te autentifici.
Cod sursa(job #1825420)
Utilizator | Data | 9 decembrie 2016 09:35:09 | |
---|---|---|---|
Problema | Farfurii | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.77 kb |
#include <iostream>
#include <fstream>
using namespace std;
int bsearch(int st, int dr, int k){
int m = st + (dr - st) / 2;
if(st == dr){
return st;
}
if(m * (m - 1) / 2 < k){
return bsearch(m + 1, dr, k);
}else{
return bsearch(st, m, k);
}
}
int main(){
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
int n, k;
fin >> n >> k;
int p = bsearch(1, n, k);
for(int i = 1; i <= n - p; i++){
fout << i << " ";
}
fout << k - (p - 1) * (p - 2) / 2 + 1 + (n - p) << " ";
for(int i = n; i >= n - p + 1; i--){
if(i == k - (p - 1) * (p - 2) / 2 + 1 + (n - p)){
continue;
}
fout << i << " ";
}
fin.close();
fout.close();
return 0;
}