Cod sursa(job #2454597)
| Utilizator | Data | 9 septembrie 2019 14:45:56 | |
|---|---|---|---|
| Problema | Farfurii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <fstream>
using namespace std;
ifstream fin ("farfurii.in");
ofstream fout ("farfurii.out");
int n,i,sol;
long long k;
int main (){
fin>>n>>k;
int st = 0, dr = n;
while (st <= dr){
int mid = (st+dr)>>1;
if (1LL*(n-mid)*(n-mid-1)/2 >= k){
sol = mid;
st = mid+1;
} else dr = mid-1;
}
long long inv = 1LL*(n-sol)*(n-sol-1)/2;
/// inv - (n-val) = k
int val = k+n-inv;
for (i=1;i<=sol;i++)
fout<<i<<" ";
if (val)
fout<<val<<" ";
for (i=n;i>sol;i--)
if (i != val)
fout<<i<<" ";
return 0;
}
