#include "elephants.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pair<int,int>> vpi;
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)
#define pb push_back
#define rsz resize
#define sz(x) int(x.size())
#define all(x) begin(x), end(x)
#define fi first
#define se second
int N;
int L;
int const n=5e4+3;
int pre[n];
int nxt[n];
int X[n];
vpi x;
set<pii>st;
int mn;
// subtask 1,2
void init(int N1, int L1, int X1[])
{
L=L1;
N = N1;
F0R(i,N)
{
X[i]=X1[i];
x.pb({X[i],i});
st.insert({X[i],i});
}
sort(all(x));
int prev=-1;
mn=pre[x[0].se];
trav(e,x)
{
pre[e.se]=prev;
nxt[prev]=e.se;
prev=e.se;
}
nxt[x.back().se]=N;
}
int update(int idx, int y)
{
int prev = pre[idx];
int next = nxt[idx];
pre[next]=prev;
if(prev!=-1)nxt[prev]=next;
else mn=next;
next = (*st.upper_bound({y,-1})).se;
prev = pre[next];
nxt[idx] = next;
pre[idx] = prev;
if(prev!=-1)nxt[prev] = idx;
else mn=idx;
pre[next] = idx;
X[idx]=y;
int cnt=0;
int b=-1;
int cur=mn;
while(cur!=N)
{
if(X[cur]>b)
{
++cnt;
b = X[cur]+L;
}
cur=nxt[cur];
}
return cnt;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
9023 ms |
204 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
9023 ms |
204 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
9023 ms |
204 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
9023 ms |
204 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
9023 ms |
204 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |