sacgajcvs

Untitled

Dec 26th, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define rep(i,a,b) for(ll i=a;i<b;i++)
  4. #define vi vector<ll>
  5. #define pii pair<int,int>
  6. #define hell 1000000007
  7. #define F first
  8. #define S second
  9. #define pb push_back
  10. using namespace std;
  11. #define N 505
  12. ll dp[N][N],a[N][N];
  13. ll n,ps;
  14.  
  15. ll check(ll i,ll j)
  16. {
  17. return ((ps-i+n)%n+(j-ps+n)%n==(j-i+n)%n);
  18. }
  19.  
  20. ll fun(ll i,ll j)
  21. {
  22. if(i==j)
  23. return 0;
  24. if(dp[i][j]!=-1)
  25. return dp[i][j];
  26. if(check(i,j))
  27. {
  28. dp[i][j]=min(fun((i-1+n)%n,j)+a[(i-1+n)%n][j],fun(i,(j+1)%n)+a[i][(j+1)%n]);
  29. }
  30. else
  31. {
  32. dp[i][j]=min(fun((i+1+n)%n,j)+a[(i+1+n)%n][j],fun(i,(j-1+n)%n)+a[i][(j-1+n)%n]);
  33. }
  34. return dp[i][j];
  35. }
  36.  
  37. void solve()
  38. {
  39. cin>>n;
  40. rep(i,0,n)
  41. {
  42. rep(j,0,n)
  43. {
  44. cin>>a[i][j];
  45. }
  46. }
  47. rep(i,0,n)
  48. {
  49. rep(j,0,n)
  50. dp[i][j]=-1;
  51. }
  52. ll mn=hell;
  53. rep(i,0,n)
  54. {
  55. ps=i;
  56. mn=min(mn,fun((i-1+n)%n,(i+1)%n));
  57. }
  58. cout<<mn<<endl;
  59. }
  60.  
  61.  
  62. int main()
  63. {
  64. int TESTS=1;
  65. // cin>>TESTS;
  66. while(TESTS--)
  67. solve();
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment