Submission #1363918

#TimeUsernameProblemLanguageResultExecution timeMemory
1363918yyc000123Superpiece (EGOI22_superpiece)C++20
40 / 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 ;
        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() ;
            else if(s[i]=='K') flag1 |= K() ;
            else flag1 |= P() ;
        }
        if(flag1) cout << "1\n" ;
        else if(flag2) cout << "2\n" ;
        if(flag1 || flag2) continue ;
        if(s.size()==1 && s[0]=='P'){
            if(c>a && b==d) cout << c-a << '\n' ;
            else cout << "-1\n" ;
            continue ;
        }
        ;
    }
    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...