srm 504 easy ComparerInator

方針

素直に調べる。

回答例

#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
#include <utility>
#include <set>
#include <cctype>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iterator>


using namespace std;


class ComparerInator{
public:
  vector<int> a, b, wanted;
  size_t n;

  bool check_a(){
    for(size_t i = 0; i < n; i++){
      if(a[i] != wanted[i]) return false;
    }
    return true;
  }
  bool check_b(){
    for(size_t i = 0; i < n; i++){
      if(b[i] != wanted[i]) return false;
    }
    return true;
  }
  bool check_min(){
    for(size_t i = 0; i < n; i++){
      if(min(a[i], b[i]) != wanted[i]) return false;
    }
    return true;
  }
  bool check_max(){
    for(size_t i = 0; i < n; i++){
      if(max(a[i], b[i]) != wanted[i]) return false;
    }
    return true;
  }

  int makeProgram(vector <int> A, vector <int> B, vector <int> w){
    a = A;
    b = B;
    wanted = w;
    n = a.size();
    if(check_a() || check_b()) return 1;
    else if(check_min() || check_max()) return 7;
    else return -1;

  }



};