Submission #1013635

#TimeUsernameProblemLanguageResultExecution timeMemory
1013635amine_arouaNetrpeljivost (COI23_netrpeljivost)C++17
10 / 100
1604 ms604 KiB
#include<bits/stdc++.h> #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx2") using namespace std; #define intt long long #define pb push_back vector<vector<int>> mat; int n ; const intt INF = 1e18; intt solve(int node ,int fr , int bk ,int l , int r) { if(l + 1 == r) { return mat[fr][bk]; } int m = (l + r)/2; intt ans = INF; if(l <= fr && fr <= m && m + 1 <= bk && bk <= r) { int L1 = l , R1 = (m + l)/2; int L2 = m + 1 , R2 = (m + 1 + r)/2; if(L1 <= fr&& fr <= R1 ) { L1 = R1 + 1; R1 = m; } if(L2 <= bk && bk <= R2) { L2 = R2 + 1; R2 = r; } for(int v1 = L1 ; v1 <= R1 ;v1++) { for(int v2 = L2; v2 <= R2 ; v2++) { ans = min(ans , solve(2*node , fr , v1 , l , m) + solve(2*node + 1 , v2 , bk , m + 1 , r) + mat[v1][v2]); } } } else if(l <= bk && bk <= m && m + 1 <= fr && fr <= r) { int L1 = l , R1 = (m + l)/2; int L2 = m + 1 , R2 = (m + 1 + r)/2; if(L1 <= bk&& bk <= R1 ) { L1 = R1 + 1; R1 = m; } if(L2 <= fr && fr <= R2) { L2 = R2 + 1; R2 = r; } for(int v1 = l ; v1 <= m ; v1++) { if(v1 == bk) continue; for(int v2 = m + 1 ; v2 <= r ; v2++) { if(v2 == fr) continue; ans = min(ans , solve(2*node , v1 , bk , l , m) + solve(2*node + 1 , fr , v2 , m + 1 , r) + mat[v1][v2]); } } } return ans; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; mat = vector<vector<int>> (n , vector<int>(n)); for(int i = 0 ; i < n ; i++) { for(int j = 0 ; j < n ; j++) { cin>>mat[i][j]; } } if(n == 1) { cout<<0<<'\n'; return 0; } intt ans = INF; int l = 0 , r = n - 1; int m = (l + r)/2; for(int fr = l ; fr <= m ; fr++) { for(int bk = m + 1 ; bk <= r ; bk++) { ans = min({ans , solve(1 , fr , bk , l , r) , solve(1 , bk , fr , l , r)}); } } cout<<ans<<'\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...