結果

問題 No.3531 Erase Pair
コンテスト
ユーザー aa36
提出日時 2026-05-02 16:59:56
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 2,490 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,688 ms
コンパイル使用メモリ 345,152 KB
実行使用メモリ 7,976 KB
最終ジャッジ日時 2026-05-04 20:56:35
合計ジャッジ時間 10,636 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 50
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

// 嘘解法
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll , ll>;
using vl = vector<ll> ; //1D
using vvl = vector<vl> ;//2D
using vvvl = vector<vvl> ;//3D
using vp = vector<pll> ; //1D
using vvp = vector<vp> ;//2D
using vvvp = vector<vvp> ;//3D
using vi = vector<int> ; //1D
using vvi = vector<vi> ;//2D
using vvvi = vector<vvi> ;//3D
using vb = vector<bool> ; //1D
using vvb = vector<vb> ;//2D
using vvvb = vector<vvb> ;//3D
using vs = vector<string> ; //1D
using vvs = vector<vs> ;//2D
using vvvs = vector<vvs> ;//3D
const ll INF = 2e18 ;
const ll MOD = 998244353;
#define rep(i,a,b) for(ll i=(ll)a; i<(ll)b; i++)
#define rrep(i,a,b) for(ll i=(ll)b-1; i>=(ll)a; i--)
#define all(vec1) (vec1).begin(), (vec1).end()
#define rall(vec1) (vec1).rbegin(), (vec1).rend()
#define yn(b,ex) if(1){if(b)cout << "Yes" << endl;else cout << "No" << endl ;if(ex)return 0;}
#define debug(var) cerr << #var << " : " << var << endl;

//fastio
struct FastIO {
   FastIO() {
      std::ios::sync_with_stdio(false);
      std::cin.tie(nullptr);
   }
} fastio;
//あまり(負の数対応)
template<typename T>
T ovr(T a,T b){
   T ret=a%b;
   if(ret<0)ret+=b;
   return ret;
}
template<typename T>
bool chmax(T &a, T b) {
   if (a < b) {
      a = b;
      return 1;
   }
   return 0;
}
template<typename T>
bool chmin(T &a, T b) {
   if (a > b) {
      a = b;
      return 1;
   }
   return 0;
}
template <typename T>
void in(vector<T> &A) {
   for(auto&&a:A) cin >> a;
}
template <typename T, typename S>
void in2(vector<T> &A, vector<S> &B) {
   assert(A.size() == B.size());
   for (size_t i = 0; i < A.size() ; i ++ ) {
      cin >> A[i] >> B[i];
   }
}

/////////main///////
int main() {
   int T; cin >> T;
   std::random_device seed_gen;
   std::mt19937 engine(seed_gen());
   while (T--) {
      int N; cin >> N;
      vi A(N); in(A);
      bool ok = false;
      rep(i,0,10) {
         unordered_multiset<int> st(all(A));
         auto B = A;
         shuffle(all(B), engine);
         while (B.size() >= 2) {
            ll a = B[B.size() - 1], b = B[B.size() - 2];
            if (st.find(a + b) == st.end()) {
               B.pop_back();
               B.pop_back();
               st.erase(st.find(a));
               st.erase(st.find(b));
            }
            else {
               break;
            }
         }
         if (B.size() <= 1) {ok = true; break;}
      }
      if (ok) cout << "Yes" << endl;
      else cout << "No" << endl;
   }
}
0