SRM504 Div2 Easy(250) ComparerInator

ComparerInator

#include <vector>
using namespace std;

int p1( int a, int b ) { return a; }        //  a
int p2( int a, int b ) { return b; }        //  b
int p3( int a, int b ) { return a<b?a:b; }  //  a<b?a:b
int p4( int a, int b ) { return a<b?b:a; }  //  a<b?b:a

bool check( vector<int> A, vector<int> B, vector<int> wanted, int(*p)(int,int) )
{
    for ( int i=0; i<(int)A.size(); i++ )
        if ( p(A[i],B[i]) != wanted[i] )
            return false;
    return true;
}

class ComparerInator{public:
int makeProgram( vector <int> A, vector <int> B, vector <int> wanted )
{
    if ( check(A,B,wanted,p1) )  return 1;
    if ( check(A,B,wanted,p2) )  return 1;
    if ( check(A,B,wanted,p3) )  return 7;
    if ( check(A,B,wanted,p4) )  return 7;
    return -1;
}};