Submission #1363927

#TimeUsernameProblemLanguageResultExecution timeMemory
1363927yyc000123Superpiece (EGOI22_superpiece)C++20
47 / 100
2 ms344 KiB
#include<bits/stdc++.h>
using namespace std ;
const int T = 1005 ;
const int ABCD = 1e8+5 ;
int t , a , b , c , d ;
string s ;

bool Q(){ return a==c || b==d || abs(a-c)==abs(b-d) ; }
bool R(){ return a==c || b==d ; }
bool B(){ return abs(a-c)==abs(b-d) ; }
bool N(){ return min(abs(a-c),abs(b-d))==1 && max(abs(a-c),abs(b-d))==2 ; }
bool K(){ return max(abs(a-c),abs(b-d))<=1 ; }
bool P(){ return c==a+1 && b==d ; }

int main(){
    cin >> t ;
    while(t--){
        cin >> s >> a >> b >> c >> d ;
        bool flag1 = false , flag2 = false ;
        int n = 0 , k = 0 , p = 0 ;
        for(int i=0 ; i<s.size() ; i++){
            if(s[i]=='Q') flag1 |= Q() , flag2 = true ;
            else if(s[i]=='R') flag1 |= R() , flag2 = true ;
            else if(s[i]=='B') flag1 |= B() , flag2 = true ;
            else if(s[i]=='N') flag1 |= N() , n = 1 ;
            else if(s[i]=='K') flag1 |= K() , k = 1 ;
            else flag1 |= P() , p = 1 ;
        }
        if(flag1) cout << "1\n" ;
        else if(flag2) cout << "2\n" ;
        else if(n+k+p==1 && p){
            if(c>a && b==d) cout << c-a << '\n' ;
            else cout << "-1\n" ;
        }
        else if((n+k+p==1 && k) || (n+k+p==2 && !n)) cout << max(abs(a-c),abs(b-d)) << '\n' ;
        else if((n+k+p==1 && n) || (n+k+p==2 && !k)){
            ;
        }
        else{
            ;
        }
    }
    return 0 ;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...