Submission #907635

# Submission time Handle Problem Language Result Execution time Memory
907635 2024-01-16T00:58:56 Z OAleksa Group Photo (JOI21_ho_t3) C++14
0 / 100
1 ms 348 KB
#include <bits/stdc++.h>
//ako ovaj vaso daso misli da me pobedjuje.....
using namespace std;
#define int long long
#define f first
#define s second
const int N = 5010;
int dp[N], a[N], n, cost[N][N], fenw[N], pos[N];
//cost[i][j] -> prvih i je reseno i ja pocinjem od j
//prvi broj je i + 1
void add(int v, int val) {
	for (int i = v;i < N;i += (i & -i))
		fenw[i] += val;
}
int get(int v) {
	int res = 0;
	for (int i = v;i > 0;i -= (i & -i))
		res += fenw[i];
	return res;
}
void solve() {
	for (int i = 1;i <= n;i++) {
		int s = 0;
		vector<int> p(n + 1);
		for (int j = n;j >= 1;j--) {
			if (a[j] < i)
				s++;
			else
				p[a[j]] = pos[a[j]] + s;
		}
		for (int j = i;j <= n;j++) {
			//uvek stavljam j-ti broj na i-tu poz
			int x = p[j];
			assert(x >= i);
			cost[i][j] = cost[i][j - 1] + x - i - get(p[j]);
			add(1, 1);
			add(pos[j] + 1, -1);
		}
		for (auto &i : fenw)
			i = 0;
	}
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	cin >> n;
  	for (int i = 1;i <= n;i++) {
  		dp[i] = 1e9;
  		cin >> a[i];
  		pos[a[i]] = i;
  	}
  	solve();
  	for (int i = 1;i <= n;i++) {
  		for (int j = i - 1;j >= 0;j--)
  			dp[i] = min(dp[i], dp[j] + cost[j + 1][i]);
  	}
  	cout << dp[n];
	}
  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -