제출 #1364623

#제출 시각아이디문제언어결과실행 시간메모리
1364623Jakub_WozniakA Light Inconvenience (CEOI23_light)C++20
0 / 100
153 ms468 KiB
#include "light.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
typedef long long ll;
typedef pair<ll,ll> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
typedef pair<ld,ld> pld;


vector <ll> akt;
vector <ll> takt;
ll siz = 1;

void trans(ll S)
{
	takt.clear();
	for(auto p : akt)
	{
		takt.push_back(S-p+1);
	}
	sort(takt.begin() , takt.end());
}

void transm1(ll S)
{
	akt.clear();
	for(auto p : takt)
	{
		akt.push_back(S-p+1);
	}
	sort(akt.begin() , akt.end());
}

void prepare()
{
	akt.push_back(1);
	takt.push_back(1);
}

void Sch()
{
	set<ll> si;
	for(auto p : takt)si.insert(p);
	takt.clear();
	for(auto p : si)takt.push_back(p);

	vector <ll> resti;
	ll A = 1;
	for(auto p : takt)
	{
		while(A*2 < p)
		{
			A *= 2;
			resti.push_back(A);
		}
		A = p;
		resti.push_back(A);
	}

	takt = resti;
}


pair<ll, vector <ll>> join(long long p)
{
	siz += p;
	trans(siz);
	ll A = 1 ;

	vector <ll> buff;
	for(auto l : takt)
	{
		buff.push_back(max(1ll,l - siz));
	}
	for(auto l : buff)takt.push_back(l);

	while(A <= p)
	{
		takt.push_back(A);
		A *= 2;
	}
	
	sort(takt.begin() , takt.end());

	Sch();

	transm1(siz);
	return (pair<ll, vector <ll>>){p,akt};
}

std::pair<long long, std::vector<long long>> leave(long long p)
{
	siz -= p;
	sort(akt.begin() ,akt.end());
	while(akt.size() && akt.back() > siz)akt.pop_back();
	trans(siz);
	ll A = 1 ;

	vector <ll> buff;
	for(auto l : takt)
	{
		buff.push_back(max(1ll,l - siz));
	}
	for(auto l : buff)takt.push_back(l);

	takt.push_back(1);

	sort(takt.begin() , takt.end());

	Sch();

	transm1(siz);
	return (pair<ll, vector <ll>>){p,akt};
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…