Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define fi first
  3. #define se second
  4. #define vi_a vector<int>a;
  5. #define p_b push_back
  6. #define ll long long
  7. #define pll pair<ll,ll>
  8. #define pii pair<int,int>
  9. #define m_p make_pair
  10. #define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
  11. #define getfiles ifstream cin("cheval.in");ofstream cout("cheval.out");
  12. #define closefiles cin.close();cout.close();
  13. #define all(x) x.begin(),x.end()
  14. #define sset ordered_set
  15. #define sqr(x) (x)*(x)
  16. #define pw(x) (1ll << x)
  17. #define sz(x) (int)x.size()
  18. #define endl "\n"
  19. bool cmp(ll a,ll b){
  20.     return a>b;
  21. }
  22. using namespace std;
  23.  
  24. int main()
  25. {
  26.     getfiles;
  27.     fast_io;
  28.     queue<pair<ll,ll> >positions;
  29.     pair<ll,ll> vvod;
  30.     int a[8][8];
  31.     for(int i=0;i<8;i++){
  32.         for(int j=0;j<8;j++){
  33.             a[i][j]=-1;
  34.         }
  35.     }
  36.     int dd[8][8];
  37.     for(int i=0;i<8;i++){
  38.         for(int j=0;j<8;j++){
  39.             dd[i][j]=-1;
  40.         }
  41.     }
  42.     char g;
  43.     cin>>g>>vvod.second;
  44.     vvod.second--;
  45.     vvod.first=g-'a';
  46.     a[vvod.first][vvod.second]=0;
  47.     dd[vvod.first][vvod.second]=0;
  48.     positions.push(vvod);
  49.     ll x1,y1;
  50.     cin>>g>>y1;
  51.     y1--;
  52.     x1=g-'a';
  53.     while(positions.size()!=0){
  54.         ll x=positions.front().first,y=positions.front().second;
  55.         ll count_1=dd[x][y]/2+dd[x][y]%2,count_2=dd[x][y]/2;
  56.         if(count_1==count_2){
  57.             count_1++;
  58.         }
  59.         else{
  60.             count_2++;
  61.         }
  62.        if(positions.front().first+count_1<8 && positions.front().second+count_2<8){
  63.             positions.push({positions.front().first+count_1,positions.front().second+count_2});
  64.             if(a[positions.front().first+count_1][positions.front().second+count_2]==-1)
  65.             a[positions.front().first+count_1][positions.front().second+count_2]=count_1+count_2;
  66.             dd[positions.front().first+count_1][positions.front().second+count_2]=count_1+count_2;
  67.         }
  68.         if(positions.front().first-count_1>=0 && positions.front().second+count_2<8){
  69.             positions.push({positions.front().first-count_1,positions.front().second+count_2});
  70.             if(a[positions.front().first-count_1][positions.front().second+count_2]==-1)
  71.             a[positions.front().first-count_1][positions.front().second+count_2]=count_1+count_2;
  72.             dd[positions.front().first-count_1][positions.front().second+count_2]=count_1+count_2;
  73.         }
  74.         if(positions.front().first+count_1<8 && positions.front().second-count_2>=0  ){
  75.             positions.push({positions.front().first+count_1,positions.front().second-count_2});
  76.             if(a[positions.front().first+count_1][positions.front().second-count_2]==-1)
  77.             a[positions.front().first+count_1][positions.front().second-count_2]=count_1+count_2;
  78.             dd[positions.front().first+count_1][positions.front().second-count_2]=count_1+count_2;
  79.         }
  80.         if(positions.front().first-count_1>=0 && positions.front().second-count_2>=0 ){
  81.             positions.push({positions.front().first-count_1,positions.front().second-count_2});
  82.             if(a[positions.front().first-count_1][positions.front().second-count_2]==-1)a[positions.front().first-count_1][positions.front().second-count_2]=count_1+count_2;
  83.             dd[positions.front().first-count_1][positions.front().second-count_2]=count_1+count_2;
  84.         }
  85.          if(positions.front().first+count_2<8 && positions.front().second+count_1<8 ){
  86.             positions.push({positions.front().first+count_2,positions.front().second+count_1});
  87.             if(a[positions.front().first+count_2][positions.front().second+count_1]==-1)a[positions.front().first+count_2][positions.front().second+count_1]=count_1+count_2;
  88.             dd[positions.front().first+count_2][positions.front().second+count_1]=count_1+count_2;
  89.         }
  90.         if(positions.front().first-count_2>=0 && positions.front().second+count_1<8 ){
  91.             positions.push({positions.front().first-count_2,positions.front().second+count_1});
  92.             if(a[positions.front().first-count_2][positions.front().second+count_1]==-1)
  93.              a[positions.front().first-count_2][positions.front().second+count_1]=count_1+count_2;
  94.               dd[positions.front().first-count_2][positions.front().second+count_1]=count_1+count_2;
  95.         }
  96.         if(positions.front().first+count_2<8 && positions.front().second-count_1>=0){
  97.             positions.push({positions.front().first+count_2,positions.front().second-count_1});
  98.             if( a[positions.front().first+count_2][positions.front().second-count_1]==-1)a[positions.front().first+count_2][positions.front().second-count_1]=count_1+count_2;
  99.             dd[positions.front().first+count_2][positions.front().second-count_1]=count_1+count_2;
  100.         }
  101.         if(positions.front().first-count_2>=0 && positions.front().second-count_1>=0 ){
  102.             positions.push({positions.front().first-count_2,positions.front().second-count_1});
  103.             if(a[positions.front().first-count_2][positions.front().second-count_1]==-1)  {
  104.                  a[positions.front().first-count_2][positions.front().second-count_1]=count_1+count_2;
  105.             }
  106.             dd[positions.front().first-count_2][positions.front().second-count_1]=count_1+count_2;
  107.         }
  108.         positions.pop();
  109.     }
  110.     cout<<a[x1][y1];
  111.     closefiles;
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement