Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define fi first
- #define se second
- #define vi_a vector<int>a;
- #define p_b push_back
- #define ll long long
- #define pll pair<ll,ll>
- #define pii pair<int,int>
- #define m_p make_pair
- #define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
- #define getfiles ifstream cin("cheval.in");ofstream cout("cheval.out");
- #define closefiles cin.close();cout.close();
- #define all(x) x.begin(),x.end()
- #define sset ordered_set
- #define sqr(x) (x)*(x)
- #define pw(x) (1ll << x)
- #define sz(x) (int)x.size()
- #define endl "\n"
- bool cmp(ll a,ll b){
- return a>b;
- }
- using namespace std;
- int main()
- {
- getfiles;
- fast_io;
- queue<pair<ll,ll> >positions;
- pair<ll,ll> vvod;
- int a[8][8];
- for(int i=0;i<8;i++){
- for(int j=0;j<8;j++){
- a[i][j]=-1;
- }
- }
- int dd[8][8];
- for(int i=0;i<8;i++){
- for(int j=0;j<8;j++){
- dd[i][j]=-1;
- }
- }
- char g;
- cin>>g>>vvod.second;
- vvod.second--;
- vvod.first=g-'a';
- a[vvod.first][vvod.second]=0;
- dd[vvod.first][vvod.second]=0;
- positions.push(vvod);
- ll x1,y1;
- cin>>g>>y1;
- y1--;
- x1=g-'a';
- while(positions.size()!=0){
- ll x=positions.front().first,y=positions.front().second;
- ll count_1=dd[x][y]/2+dd[x][y]%2,count_2=dd[x][y]/2;
- if(count_1==count_2){
- count_1++;
- }
- else{
- count_2++;
- }
- if(positions.front().first+count_1<8 && positions.front().second+count_2<8){
- positions.push({positions.front().first+count_1,positions.front().second+count_2});
- 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;
- dd[positions.front().first+count_1][positions.front().second+count_2]=count_1+count_2;
- }
- if(positions.front().first-count_1>=0 && positions.front().second+count_2<8){
- positions.push({positions.front().first-count_1,positions.front().second+count_2});
- 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;
- dd[positions.front().first-count_1][positions.front().second+count_2]=count_1+count_2;
- }
- if(positions.front().first+count_1<8 && positions.front().second-count_2>=0 ){
- positions.push({positions.front().first+count_1,positions.front().second-count_2});
- 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;
- dd[positions.front().first+count_1][positions.front().second-count_2]=count_1+count_2;
- }
- if(positions.front().first-count_1>=0 && positions.front().second-count_2>=0 ){
- positions.push({positions.front().first-count_1,positions.front().second-count_2});
- 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;
- dd[positions.front().first-count_1][positions.front().second-count_2]=count_1+count_2;
- }
- if(positions.front().first+count_2<8 && positions.front().second+count_1<8 ){
- positions.push({positions.front().first+count_2,positions.front().second+count_1});
- 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;
- dd[positions.front().first+count_2][positions.front().second+count_1]=count_1+count_2;
- }
- if(positions.front().first-count_2>=0 && positions.front().second+count_1<8 ){
- positions.push({positions.front().first-count_2,positions.front().second+count_1});
- 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;
- dd[positions.front().first-count_2][positions.front().second+count_1]=count_1+count_2;
- }
- if(positions.front().first+count_2<8 && positions.front().second-count_1>=0){
- positions.push({positions.front().first+count_2,positions.front().second-count_1});
- 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;
- dd[positions.front().first+count_2][positions.front().second-count_1]=count_1+count_2;
- }
- if(positions.front().first-count_2>=0 && positions.front().second-count_1>=0 ){
- positions.push({positions.front().first-count_2,positions.front().second-count_1});
- 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;
- }
- dd[positions.front().first-count_2][positions.front().second-count_1]=count_1+count_2;
- }
- positions.pop();
- }
- cout<<a[x1][y1];
- closefiles;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement