제출 #1328400

#제출 시각아이디문제언어결과실행 시간메모리
1328400dorkikannA Light Inconvenience (CEOI23_light)C++20
5 / 100
135 ms424 KiB
#include <bits/stdc++.h>
#include "light.h"
using namespace std;
typedef long long int ll;

vector<ll> Positions;

pair<ll, vector<ll>> join(ll x)
{
    ll s = Positions.back() + x;

    vector<ll> Helper;

    for(int i = Positions.size() - 1; i > 0; i--) 
        Helper.push_back(Positions[i] + x);

    if(Helper.size() == 0)
        Helper.push_back(s);
    ll idx = Helper.back() - 1;

    while(idx > 0) {
        ll diff = s - idx;
        if(diff < idx) {
            Helper.push_back(idx - diff);
            idx -= diff + 1;
        } else {
            Helper.push_back(1);
            idx = 0;
        }
    }

    reverse(Helper.begin(), Helper.end());
    Positions = Helper;

    return make_pair(x, Positions);
}

pair<ll, vector<ll>> leave(ll x)
{
    ll s = Positions.back() - x;

    vector<ll> Helper;
    ll val = s;
    int idx = Positions.size() - 1;
    
    while(val > 1) {
        Helper.push_back(val);

        ll diff = s - val + 1;
        ll next = max((ll)1, val - 1 - diff);

        while(Positions[idx] >= val)
            idx--;

        if(Positions[idx] > next) {
            ll pos = Positions[idx];
            ll pos2 = max(next, Positions[idx-1]);
            ll diff2 = pos - pos2;

            if(s - pos <= diff2) 
                val = next;
            else
                val = pos;
        } else 
            val = next;
    }
    Helper.push_back(1);

    reverse(Helper.begin(), Helper.end());
    Positions = Helper;

    return make_pair(x, Positions);
}

void prepare()
{
    Positions.push_back(1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...