Submission #1315659

#TimeUsernameProblemLanguageResultExecution timeMemory
1315659aren_danceNetrpeljivost (COI23_netrpeljivost)C++20
27 / 100
1595 ms10184 KiB
#include <bits/stdc++.h> using namespace std; const int N=6e5+1; #define ll long long vector<vector<ll>> divide(int n,vector<vector<ll>> g){ if(n==1){ ll o=1e18; return {{o,o},{o,0}}; } vector<vector<ll>> f(n+1,vector<ll>(n+1,1e18)); vector<vector<ll>> g1(n/2+1,vector<ll>(n/2+1)); vector<vector<ll>> g2(n/2+1,vector<ll>(n/2+1)); for(int i=1;i<=n/2;++i){ for(int j=1;j<=n/2;++j){ g1[i][j]=g[i][j]; } } for(int i=n/2+1;i<=n;++i){ for(int j=n/2+1;j<=n;++j){ g2[i-n/2][j-n/2]=g[i][j]; } } vector<vector<ll>> r=divide(n/2,g1); vector<vector<ll>> d=divide(n/2,g2); for(int i=1;i<=n/2;++i){ for(int j=1;j<=n/2;++j){ for(int k=1;k<=n/2;++k){ for(int p=1;p<=n/2;++p){ f[i][p+n/2]=min(f[i][p+n/2],r[i][j]+d[k][p]+g[j][k+n/2]); f[p+n/2][i]=min(f[p+n/2][i],r[i][j]+d[k][p]+g[j][k+n/2]); } } } } return f; } int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); int n; cin>>n; vector<vector<ll>> g(n+1,vector<ll> (n+1)); for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ cin>>g[i][j]; } } vector<vector<ll>> p=divide(n,g); ll mn=1e18; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ mn=min(mn,p[i][j]); } } cout<<mn<<'\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...