Submission #1109927

#TimeUsernameProblemLanguageResultExecution timeMemory
1109927flashmtGroup Photo (JOI21_ho_t3)C++17
100 / 100
228 ms98572 KiB
#include <bits/stdc++.h>
using namespace std;
const int oo = 1 << 30;

int main()
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> id(n + 1);
  for (int i = 0; i < n; i++)
  {
    int x;
    cin >> x;
    id[x] = i;
  }

  vector<vector<int>> c(n + 1, vector<int>(n + 1));
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
    {
      c[i][j] = c[i - 1][j] + c[i][j - 1] - c[i - 1][j - 1];
      if (j < i && id[j] < id[i])
        c[i][j]++;
    }

  vector<int> f(n + 1, oo);
  f[0] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < i; j++)
    {
      int cost = c[i][i] + c[j][j] - c[i][j] - c[j][i];
      cost += (n - i) * (i - j) - (c[n][i] + c[i][j] - c[n][j] - c[i][i]);
      f[i] = min(f[i], f[j] + cost);
    }

  cout << f[n] << endl;
}
#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...