Submission #628832

#TimeUsernameProblemLanguageResultExecution timeMemory
628832groshiGroup Photo (JOI21_ho_t3)C++17
100 / 100
502 ms117948 KiB
#include<iostream> #include<vector> #include<algorithm> #include<iomanip> #include<math.h> using namespace std; int mniejsze[6000];///ile mniejszych na lewo od wartosci + prefiksowe na tym int dp[6000]; int gdzie[6000]; int zmiana[6000][6000];///ile na przedziale + prefiksowe int t[6000]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; gdzie[t[i]]=i; } for(int i=1;i<=n;i++) for(int j=1;j<i;j++) if(t[j]<t[i]) mniejsze[t[i]]++; for(int i=1;i<=n;i++) mniejsze[i]+=mniejsze[i-1]; for(int i=1;i<=n;i++) for(int j=1;j<i;j++) zmiana[t[i]][t[j]]++; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) zmiana[t[i]][j]+=zmiana[t[i]][j-1]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) zmiana[i][j]+=zmiana[i-1][j]; for(int i=1;i<=n;i++) dp[i]=1e9; dp[0]=0; for(int i=1;i<=n;i++) for(int j=i;j>=1;j--) dp[i]=min(dp[i],dp[j-1]+zmiana[i][n]-zmiana[j-1][n]-(zmiana[i][i]-zmiana[j-1][i])-(zmiana[i][j-1]-zmiana[j-1][j-1])+mniejsze[i]-mniejsze[j-1]); cout<<dp[n]; 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...