제출 #1180789

#제출 시각아이디문제언어결과실행 시간메모리
1180789Szymon_PilipczukGroup Photo (JOI21_ho_t3)C++20
100 / 100
151 ms98584 KiB
#include <bits/stdc++.h> using namespace std; #define rep(a,b) for(int a = 0;a<b;a++) int main() { int n; cin>>n; vector<int> h(n); vector<int> f(n); for(int i = 0;i<n;i++) { cin>>h[i]; h[i]--; f[h[i]] = i; } vector<vector<int>> c(n); rep(i,n) c[i].resize(n); rep(i,n) { int cu = 0; for(int j = i+1;j<n;j++) { if(f[j] < f[i]) { cu++; //cout<<j<<" "<<f[j]<<"\n"; } } c[i][i] = cu; for(int j = i+1;j<n;j++) { if(f[j] < f[i]) { cu--; } else { cu++; } c[i][j] = cu; } } vector<int> dp(n+1,1e9); dp[0] = 0; //cout<<c[0][0]<<"\n"; rep(i,n) { int cu = 0; for(int j = 0;j<=i;j++) { cu += c[i-j][i]; dp[i+1] = min(dp[i+1],dp[i-j]+cu); } //cout<<dp[i]<<" "; } cout<<dp[n]; /* vector<vector<int>> l; vector<vector<int>> r; for(int i = 0;i<n;i++) { for(int j = 0;j<i;j++) { if(h[j] > h[i]) { l.push_back(h[j]); } } for(int j = i+1;j<n;j++) { if(h[j] > h[i]) { r.push_back(h[j]); } } sort(all(l[i])); sort(all(r[i])); }*/ }
#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...