blob: ed2f891b7a6786a73f2f44efa8e477736d443962 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
template<typename T>
struct persistent {
int& time;
vector<pair<int, T>> data;
persistent(int& time, T value = {})
: time(time), data(1, {2*time, value}) {}
T get(int t) {
return ranges::upper_bound(data,pair{2*t+1, T{}})[-1].second;
}
int set(T value) {
time++;
data.push_back({2*time, value});
return time;
}
};
|