Submission #1215650

#TimeUsernameProblemLanguageResultExecution timeMemory
1215650alimqStudentsko (COCI14_studentsko)C++20
30 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

const int n0=5003;
int n,k,a[n0],p[n0],dp[n0];
array<int,2> b[n0];

int main() 
{
    cin >> n >> k;
    if(n>20) {
      return 0;
    }
    for(int i=0; i<n; i++) {
      cin >> a[i];
      b[i]={a[i],i};
    }
    sort(b,b+n);
    for(int i=0; i<n; i++) {
      p[b[i][1]]=i/k;
      // p - каким по величине является элемент, относительно других (0-й, 1-й, и т.д.)
      // делим на k, это будет номер блока
      // тогда нам нужно найти LIS (наибольшую возрастающую нестрого подпоследовательность)
      // ответ будет n-|LIS|
    }
    int ans=0;
    // dp[i] - |LIS| зак. на элемент i (p[j]=i)
    for(int j=0; j<n; j++) {
		int mx=0;
		for(int i=0; i<=p[j]; i++) {
			mx=max(mx,dp[i]);
		}
		dp[p[j]]=mx+1;
		ans=max(ans,dp[p[j]]);
	}
    cout << n-ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...