Cod sursa(job #3359928)

Utilizator mrvalentynTime Limit Exceeded mrvalentyn Data 6 iulie 2026 15:56:20
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.74 kb
/*  
    *
    * soon on twitch : ex3qute 
    * 
    * ax ah al
    * kwxkwxkxkxwkxkwxkw
    * dumnezeu sa o ierte
*/


#include <bits/stdc++.h>  
using namespace std;  
#define ull unsigned long long  
#define ll long long  
#define pb push_back  
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr);  
const int MOD = 1e9+7;
int di[4]={0,0,-1,1};  
int dj[4]={-1,1,0,0};  

const string FILENAME = "farfurii";
ifstream f(FILENAME + ".in");
ofstream g(FILENAME + ".out");


#ifndef exe
#define cin f
#define cout g
#endif

int aint[60001];
int a[15001];

void build(int curr, int st, int dr) {
    if(st == dr) aint[curr] = a[st];
    else {
        int m = (st + dr) / 2;
        build(curr * 2, st, m);
        build(curr * 2 + 1, m + 1, dr);

        aint[curr] = aint[curr * 2] + aint[curr * 2 + 1];
    }
}

// st, dr din query, 
int query(int curr, int cst, int cdr, int st, int dr) {
    if(st > dr) return 0;
    if(st == cst && dr == cdr) return aint[curr];

    int cm = (cst + cdr) / 2;
    int x = query(curr * 2, cst, cm, st, min(dr,cm));
    int y = query(curr * 2 + 1, cm + 1, cdr, max(st, cm + 1), dr);

    return x + y;    
}

void update(int curr, int cst, int cdr, int poz, int x) {
    if(cst == cdr) aint[curr] -= x;
    else {
        int cm = (cst + cdr) / 2;
        if(poz <= cm) update(curr * 2, cst, cm, poz, x);
        else update(curr * 2 + 1, cm + 1, cdr, poz, x);
        
        aint[curr] = aint[curr * 2] + aint[curr * 2 + 1];
    }
}

signed main(){  

    ll n, k;
    cin >> n >> k;

    ll x = 1;
    while(x * (x - 1) / 2 <= k) x++;

    for(ll i=1;i<=n-x;++i) cout << i << ' ';

    ll nr = n - (x * (x - 1) / 2 - k);
    cout << nr << ' ';
    for(ll i=n; i > n - x; --i) {
        if(i != nr) cout << i << ' ';
    }

}