Untitled
unknown
plain_text
2 years ago
1.1 kB
7
Indexable
#include <bits/stdc++.h> using namespace std; ifstream fin("axel.in"); ofstream fout("axel.out"); long long int n, v[1505][1505], cost[1505][8005], minnr=2e9, ans; bool ok=true; void solve(){ fin>>n; for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ fin>>v[i][j]; } } for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ if(i>=j){ cost[j][v[i][j]]=min(cost[j][v[i][j]], i-j*1LL+1); } else if(i<j){ cost[j][v[i][j]]=min(cost[j][v[i][j]], i+(n-j)*1LL+1); } } } for(int i=0; i<=8000; i++){ ok=true; ans=0; for(int j=1; j<=n; j++){ if(cost[j][i]==0){ ok=false; break; } ans+=cost[j][i]-1; } if(ok){ minnr=min(minnr, ans*1LL); } } if(minnr==2e9){ fout<<"NU"; } else{ fout<<"DA\n"<<minnr; } } int main(){ solve(); return 0; }
Editor is loading...