日々精進

aikoと旅行とプログラミング

【AOJ 2780】Best Matched Pair

問題

Best Matched Pair | Aizu Online Judge

方針

全通り試す

コード

#include <iostream>

using namespace std;

#define rep(i,n) REP(i,0,n)
#define REP(i,a,n) for(int i = a ; i < (int)n ; i++)

int n;
int a[1001];

bool check(int num){
  int prev = num % 10;
  num /= 10;
  
  while(num > 0){
    if(num%10 != prev - 1){    // 順番になってない場合
      return false;
    }
    prev = num % 10;
    num /= 10;
  }
  return true;
}

signed main(){
  cin.tie(0);
  ios::sync_with_stdio(false);

  cin >> n;
  rep(i, n) cin >> a[i];
 
  int ans = -1;
  rep(i, n-1){
    REP(j, i+1, n){
      int num = a[i] * a[j];      
      if(check(num) && ans < num) ans = num;
    }
  }

  cout << ans << endl;
}