Submission #1155733

#TimeUsernameProblemLanguageResultExecution timeMemory
1155733fatman87878Group Photo (JOI21_ho_t3)C++20
100 / 100
537 ms196376 KiB
#include<bits/stdc++.h> using namespace std; #define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit); #define lb(x) (x)&-(x) #define all(x) (x).begin(),(x).end() #define ll long long constexpr int maxN=5e3+5; int n,val[maxN],cost[maxN][maxN],cost2[maxN][maxN],dp[maxN]; int main(){ IOS cin>>n; for(int i = 1;i<=n;i++)cin>>val[i]; for(int i = 1;i<=n;i++)for(int j = 1;j<i;j++){ if(val[j]<val[i]){ cost[1][val[i]]++; cost[val[j]+1][val[i]]--; } else { cost[1][val[i]]++; cost[1][val[j]]--; cost[val[i]+1][val[i]]--; cost[val[i]+1][val[j]]++; cost2[1][val[i]]++; cost2[val[i]+1][val[i]]--; } } for(int i = 1;i<=n;i++)for(int j = 1;j<=n;j++)cost[i][j]+=cost[i][j-1]; for(int i = 1;i<=n;i++)for(int j = 1;j<=n;j++)cost[i][j]+=cost[i-1][j]; for(int i = 1;i<=n;i++)for(int j = 1;j<=n;j++)cost2[i][j]+=cost2[i][j-1]; for(int i = 1;i<=n;i++)for(int j = 1;j<=n;j++)cost2[i][j]+=cost2[i-1][j]; for(int i = 1;i<=n;i++){ dp[i] = 1e9; for(int j = 0;j<i;j++){ dp[i] = min(dp[i],dp[j]+min(cost2[j+1][i],cost[j+1][i])); } } cout<<dp[n]<<'\n'; }
#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...