# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1274418 | nthvn | Rabbit Carrot (LMIO19_triusis) | C++20 | 59 ms | 6824 KiB |
#include "bits/stdc++.h"
using namespace std;
#define int long long
#define LOG(n) (63 - __builtin_clzll((n)))
#define fi first
#define se second
#define pii pair<int,int>
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
#define pb push_back
#define ll long long
const int N = 2e5+5;
int n,m,a[N];
int dp[N], pos[N];
struct BIT{
int bit[N];
BIT(){
memset(bit,0x3f,sizeof(bit));
}
void update(int i, int x){
for(;i;i-=i&-i) bit[i]= min(bit[i],x);
}
int get(int i){
int ans =1e9;
for(;i<=n+1;i+=i&-i) ans=min(ans,bit[i]);
return ans;
}
}bit;
void precalc(){
vector<int> v;
for(int i=1;i<=n;i++){
v.pb(a[i]-(i+1)*m);
}
sort(all(v));
for(int i=1;i<=n+1;i++){
pos[i]= lower_bound(all(v), a[i]-(i+1)*m)-v.begin()+1;
}
}
signed main(){
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
if(fopen("TASK.INP", "r")){
freopen("TASK.INP", "r", stdin);
freopen("TASK.OUT", "w", stdout);
}
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
if(a[1]>m){
dp[1]=1;
a[1]=m;
}
precalc();
bit.update(pos[1], dp[1]-2);
// cerr<<"\n";
for(int i=2;i<=n+1;i++){
dp[i]= bit.get(pos[i]) +i;
bit.update(pos[i], dp[i]-(i+1));
}
cout<<dp[n+1];
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |