Cod sursa(job #3223774)

Utilizator PsyDuck1914Feraru Rares-Serban PsyDuck1914 Data 13 aprilie 2024 16:13:47
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("farfurii.in");
ofstream g ("farfurii.out");

const int NMAX = 1e5;

int n;
long long k;

//cel mai mic mai mare decat k;

long long cb(){
    
    long long st = 1;
    long long dr = NMAX;
    long long rez = NMAX+1;
    
    while(st <= dr){
        
        long long mij = (st + dr)/2;
        if(mij * (mij-1)/2 >= k)
            rez = mij, dr = mij-1;
        else st = mij+1;
        
    }
    
    return rez;
    
    
}

int v[NMAX+1];

int main()
{
    
    f >> n >> k;
    
    long long poz = cb();
    
    for(int i=1; i<=n-poz; i++)
        v[i] = i;
        
    long long x = poz*(poz-1)/2 - k;
    //cout << n - x;
    v[n - poz + 1] = n - x;
    
    
    
    int sclav = n - poz + 2;
    
    int val = n;
    
    for(int i=sclav; i<=n; i++){
        
        if(val == n - x)
            val --;
        v[i] = val;
        val --;
        
    }
    
    for(int i=1; i<=n; i++)
        g << v[i] << ' ';

    return 0;
}