#include <stdio.h>
#include <stdlib.h>
// Cari panjang LIS dengan binary search (O(N log N))
int lis_length(int *A, int n) {
int *tails
= (int *)malloc(n
* sizeof(int)); int len = 0;
for (int i = 0; i < n; i++) {
// Binary search: cari posisi terkecil di tails yang >= A[i]
int lo = 0, hi = len;
while (lo < hi) {
int mid = (lo + hi) / 2;
if (tails[mid] < A[i])
lo = mid + 1;
else
hi = mid;
}
tails[lo] = A[i];
if (lo == len) len++;
}
return len;
}
int main() {
int n;
int *A
= (int *)malloc(n
* sizeof(int)); for (int i = 0; i < n; i++)
int langkah = n - lis_length(A, n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIENhcmkgcGFuamFuZyBMSVMgZGVuZ2FuIGJpbmFyeSBzZWFyY2ggKE8oTiBsb2cgTikpCmludCBsaXNfbGVuZ3RoKGludCAqQSwgaW50IG4pIHsKICAgIGludCAqdGFpbHMgPSAoaW50ICopbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7CiAgICBpbnQgbGVuID0gMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIC8vIEJpbmFyeSBzZWFyY2g6IGNhcmkgcG9zaXNpIHRlcmtlY2lsIGRpIHRhaWxzIHlhbmcgPj0gQVtpXQogICAgICAgIGludCBsbyA9IDAsIGhpID0gbGVuOwogICAgICAgIHdoaWxlIChsbyA8IGhpKSB7CiAgICAgICAgICAgIGludCBtaWQgPSAobG8gKyBoaSkgLyAyOwogICAgICAgICAgICBpZiAodGFpbHNbbWlkXSA8IEFbaV0pCiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGhpID0gbWlkOwogICAgICAgIH0KICAgICAgICB0YWlsc1tsb10gPSBBW2ldOwogICAgICAgIGlmIChsbyA9PSBsZW4pIGxlbisrOwogICAgfQoKICAgIGZyZWUodGFpbHMpOwogICAgcmV0dXJuIGxlbjsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBpbnQgKkEgPSAoaW50ICopbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBzY2FuZigiJWQiLCAmQVtpXSk7CgogICAgaW50IGxhbmdrYWggPSBuIC0gbGlzX2xlbmd0aChBLCBuKTsKICAgIHByaW50ZigiJWRcbiIsIGxhbmdrYWgpOwoKICAgIGZyZWUoQSk7CiAgICByZXR1cm4gMDsKfQ==