Submission #1194550

#TimeUsernameProblemLanguageResultExecution timeMemory
1194550nagorn_phStudentsko (COCI14_studentsko)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define ordered_set <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define ordered_multiset <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update>

#define int long long
#define double long double
#define pii pair <int, int>
#define tiii tuple <int, int, int>
#define emb emplace_back
#define all(a) a.begin(), a.end()
#define iShowSpeed cin.tie(NULL)->sync_with_stdio(false)

const int mod = 1e9 + 7;
const int inf = 1e18;

int32_t main(){
    iShowSpeed;
    int n, k; cin >> n >> k;
    vector <pii> a(n); for (int i = 0; i < n; i++) cin >> a[i].first, a[i].second = i;
    vector <pii> b; sort(all(a));
    for (int i = 0; i < n; i++) {
        b.emb(i / k, a[i].second);
    }
    sort(all(b));
    vector <int> lis;
    for (auto [x, e] : b) {
        // cout << e << ": " << "TEAM " << x << "\n";
        int idx = upper_bound(all(lis), e) - lis.begin();
        if (idx == lis.size()) lis.emb(e);
        else lis[idx] = e;
    }
    cout << n - lis.size();
}
#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...