Alex_tz307

1119. Metro - Timus(primele 6 teste)

Nov 3rd, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define R2 1.414213562373
  4.  
  5. using namespace std;
  6.  
  7. const int INF = 1e18L;
  8.  
  9. int32_t main() {
  10.     ios_base::sync_with_stdio(false);
  11.     cin.tie(nullptr);
  12.     cout.tie(nullptr);
  13.     int N, M, K;
  14.     cin >> N >> M >> K;
  15.     vector < vector < long double > > dp(N + 1, vector < long double >(M + 1, INF)), D(N + 1, vector < long double >(M + 1, INF));
  16.     while(K--) {
  17.         int x, y;
  18.         cin >> x >> y;
  19.         D[x][y] = 100 * R2;
  20.     }
  21.     if(D[1][1] != INF)
  22.         dp[1][1] = D[1][1];
  23.     else
  24.         dp[1][1] = 200;
  25.     for(int i = 1; i <= N; ++i)
  26.         for(int j = 1; j <= M; ++j)
  27.             if(i != 1 || j != 1)
  28.                 dp[i][j] = min(dp[i - 1][j] + 100, min(dp[i][j - 1] + 100, dp[i - 1][j - 1] + D[i][j]));
  29.     int ans = (int)(dp[N][M] * 10), sol = ans / 10;
  30.     if(ans % 10 > 4)
  31.         ++sol;
  32.     cout << sol;
  33. }
  34.  
Advertisement
Add Comment
Please, Sign In to add comment