Submission #1059637

#TimeUsernameProblemLanguageResultExecution timeMemory
1059637NeroZeinSličnost (COI23_slicnost)C++17
24 / 100
3057 ms3420 KiB
#include "bits/stdc++.h"
using namespace std;

#ifdef Nero
#include "Deb.h"
#else
#define debug(...)
#endif

const int N = 1e5 + 5; 

int n, k;

int ps[N];
int ind[N]; 

void upd(int l, int r, int v) {
  for (int i = l; i <= min(n - 1, r); ++i) {
    ps[i] += v; 
  }
}

pair<int, int> combine(pair<int, int> x, pair<int, int> y) {
  if (x.first < y.first) swap(x, y);
  if (x.first == y.first) {
    x.second += y.second;
  }
  return x; 
}

pair<int, int> qry() {
  pair<int, int> ret; 
  //for (int i = 0; i < n; ++i) {
    //debug(i, ps[i]); 
  //}
  for (int i = k - 1; i < n; ++i) {
    ret = combine(ret, make_pair(ps[i], 1)); 
  }
  return ret; 
}

void solve(vector<int> a) {
  for (int i = 0; i < k; ++i) {
    upd(ind[a[i]], ind[a[i]] + k - 1, 1); 
  }
  pair<int, int> ans; 
  for (int i = k - 1; i < n; ++i) {
    auto v = qry();
    ans = combine(ans, v);
    upd(ind[a[i - k + 1]], ind[a[i - k + 1]] + k - 1, -1);
    if (i + 1 < n) {
      upd(ind[a[i + 1]], ind[a[i + 1]] + k - 1, 1);       
    }
  }
  for (int i = n - k + 1; i < n; ++i) {
    upd(ind[a[i]], ind[a[i]] + k - 1, -1); 
  }
  cout << ans.first << ' ' << ans.second << '\n'; 
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int q;
  cin >> n >> k >> q;
  vector<int> a(n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  vector<int> b(n); 
  for (int i = 0; i < n; ++i) {
    cin >> b[i]; 
    ind[b[i]] = i; 
  }
  solve(a); 
  while (q--) {
    int t;
    cin >> t;
    swap(a[t - 1], a[t]); 
    solve(a); 
  }
  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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...