Submission #1164769

#TimeUsernameProblemLanguageResultExecution timeMemory
1164769KaleemRazaSyedRabbit Carrot (LMIO19_triusis)C++20
14 / 100
116 ms596 KiB
#include<bits/stdc++.h>

using namespace std;

int main()
{
  int n, m;
  cin >> n >> m;
  int a[n];
  for(int i = 0; i < n; i ++)
    cin >> a[i];

  vector<int> vec;
  for(int i = 0; i < n; i ++)
    vec.push_back(a[i]), vec.push_back(i * m);

  sort(vec.begin(), vec.end());
  vec.resize(unique(vec.begin(), vec.end()) - vec.begin());

  for(int i = 0; i < n; i ++)
    a[i] = lower_bound(vec.begin(), vec.end(), a[i]) - vec.begin();

  const int inf = 1e9;
  
  int dp[2][vec.size()];
  for(int i = 0; i < vec.size(); i++)
    dp[0][i] = inf;

  dp[0][0] = 0;
  for(int i = 0; i < n; i ++)
    {
      bool b = (i + 1) & 1, nb = i & 1;

      int mi = inf, j = vec.size() - 1;
      for(int k = vec.size() - 1; k >= 0; k--)
	{
	  while(j >= 0 && vec[k] - vec[j] <= m) mi = min(mi, dp[nb][j]), j--;
	  dp[b][k] = mi + (k != a[i]);
	}
    }

  int ans = n;
  for(int i = 0; i < vec.size(); i ++)
    ans = min(ans, dp[n % 2][i]);

  cout << ans << endl;
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...