diff --git a/src/11/19/P2943.cpp b/src/11/19/P2943.cpp new file mode 100644 index 0000000..e35ee2d --- /dev/null +++ b/src/11/19/P2943.cpp @@ -0,0 +1,32 @@ +#include +#include +#include +#include + +const int inf=1e9+7; +int n,m; +std::vector a,dp,s; + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>n>>m; + a.resize(n+1); + dp.resize(n+1,inf); + s.resize(m+1); + + for(int i=1;i<=n;i++)std::cin>>a[i]; + dp[0]=0; + for(int i=1;i<=n;i++){ + int size=0; + for(int j=i;j>=1&&size*size<=n;j--){ + if(s[a[j]]!=i){ + size++; + s[a[j]]=i; + } + dp[i]=std::min(dp[i],dp[j-1]+size*size); + } + } + std::cout<