Submission details
Task:Poistot
Sender:Hattless
Submission time:2025-01-18 16:28:34 +0200
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp:31:1: error: '::main' must return 'int'
   31 | ll main() {
      | ^~

Code

#include <bits/stdc++.h>
#define ln "\n";
using namespace std;
using ll = long long;
ll n;
ll N = 1, itera = 1;
vector<int> segT;
void update(ll k) {
    k += N;
    segT[k] = 0;
    k/=2;
    while(k >= 1) {
        segT[k] = max(segT[k*2],segT[k*2+1]);
        k/= 2;
    }
}
ll locate(ll x) {
    if(segT[1] <= x) {
        return -1;
    }
    ll start = 1;
    while(start < N) {
        if(segT[start*2] > x) {
            start*=2;
        } else {
            start = start*2+1;
        }
    }
    return start-N;
}
ll main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;

    while(N < n) {
        N = pow(itera,2);
        itera++;
    }
    segT.assign(2*N,0);
    vector<ll> vec(2*N,0);
    for(int i = N-1; i < N+n-1; i++) {
        cin >> segT[i];
        vec[i] = segT[i];
    }
    for(int i = N-2; i > 0; i--) {
        segT[i] = max(segT[i*2],segT[i*2+1]);
    }
    // for(int i = 0; i <N*2; i++) cout << segT[i] << " ";
    // cout << ln;
    // update(locate(5));
    ll c = 0;
    vector<vector<ll>> lists;
    for(int i= N-1; i < N+n-1; i++) {
        if(segT[i] == 0) continue;
        c++;
        ll val = locate(segT[i]);
        vector<ll> temp;
        temp.push_back(vec[i]);
        update(i-N);
        while(val != -1) {
            temp.push_back(vec[val+N]);
            update(val);
            ll t = val;
            // for(int j = 0; j <N*2; j++) cout << segT[j] << " ";
            // cout << ln;
            // cout << vec[t+N] << ln;
            val = locate(vec[t+N]);
        }
        lists.push_back(temp);
    }
    cout << c << ln;
    for(vector<ll> list:lists) {
        for(ll num :list) {
            cout << num << " ";
        }
        cout << ln;
    }
}