Submission #1145117

#TimeUsernameProblemLanguageResultExecution timeMemory
1145117nuutsnoyntonGroup Photo (JOI21_ho_t3)C++20
64 / 100
5094 ms7936 KiB
#include<bits/stdc++.h> using namespace std; using ll = int; using pll = pair< ll, ll >; const ll N = 802; ll pd[N][N], Ind[N], d[N][N], ind[N], sum[N][N]; int main() { ll n, m, r, x, hvt_cnt, s, bos_cnt, y, found, i, j, ans, t, here; cin >> n; ll dp[n + 2], a[n+ 2]; for (i = 1; i <= n; i ++) { cin >> a[i]; Ind[a[i]] = i; ind[a[i]] = i; } for (i = 1; i <= n; i ++) { pd[i][i] = 0; sum[i][i] = ind[i]; vector < ll > v; v.push_back(ind[i]); for (j = i + 1; j <= n; j ++) { sum[i][j] = sum[i][j - 1] + ind[j]; r = lower_bound(v.begin(), v.end(), ind[j]) - v.begin(); pd[i][j] = pd[i][j- 1] + r; v.push_back(ind[j]); sort(v.begin(), v.end()); } } for(i = 1; i <= n; i ++) dp[i] = 1e18; // for (i = 1; i <= n; i ++) { // for (j = i; j <= n; j ++) { // cout << i << " " << j << " " << pd[i][j] << endl; // } // } Ind[0] = n + 1; for (i = 0; i <= n; i ++) { // cout << i << endl; // for (j = i; j <= n; j ++) { // cout << ind[j] << " "; // } // cout << endl; for (r = Ind[i] + 1; r <= n; r ++) { ind[a[r]] --; } vector < ll > v; for (j = i + 1; j <= n; j ++) { v.push_back(ind[j]); // cout << ind[j] << "R" << endl; sort(v.begin(), v.end()); d[i ][j] = 0; for ( r = 0; r < v.size(); r ++) { d[i][j] += (abs(v[r] - (r + 1))); } } } //cout << "HI" << endl; // for (i = 0; i <= n; i ++) { // for (j = i + 1; j <= n; j ++) { // cout << i << " " << j << " " << d[i][j] << endl; // } // } for (i = 1; i <= n; i ++) ind[a[i]] = i; dp[0]= 0; dp[1] = ind[1] - 1; for (i = 2; i <= n; i ++) { for (j = 0; j < i; j ++) { s = dp[j]; s = s + d[j][i]; // cout << s << endl; s = s + pd[j + 1][i]; // cout << j << " " << dp[j] << " " << s << " " << i << endl; dp[i] = min(dp[i], s); } // cout << dp[i] << " " << i << endl; } // cout << endl; // for (i = 1; i <= n; i ++) { // cout << dp[i] << " "; // } // cout <<endl; cout << dp[n] << endl; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:34:42: warning: overflow in conversion from 'double' to 'll' {aka 'int'} changes value from '1.0e+18' to '2147483647' [-Woverflow]
   34 |         for(i = 1; i <= n; i ++) dp[i] = 1e18;
      |                                          ^~~~
#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...