제출 #1137818

#제출 시각아이디문제언어결과실행 시간메모리
1137818huutuanBroken Device 2 (JOI22_device2)C++20
5 / 100
450 ms21684 KiB
#include "Anna.h"
#include <utility>
#include <vector>

#include <bits/stdc++.h>

using namespace std;

namespace Anna_solver{
   const int M=1824;
   int Declare(){
      return M;
   }
   mt19937 rng(69420);
   pair<vector<int>, vector<int>> Anna(long long A){
      long long val=uniform_int_distribution<long long>(0, (1ll<<60)-1)(rng);
      A^=val;
      vector<int> v;
      v.push_back(1);
      while (1){
         vector<int> vv;
         vector<int> ord(60); iota(ord.begin(), ord.end(), 0);
         shuffle(ord.begin(), ord.end(), rng);
         for (int j:ord){
            if (A>>j&1) vv.push_back(0);
            vv.push_back(1);
         }
         if ((int)v.size()+(int)vv.size()>M) break;
         v.insert(v.end(), vv.begin(), vv.end());
      }
      return {vector<int>(v.size(), 0), v};
   }
}

int Declare() {
   return Anna_solver::Declare();
}

std::pair<std::vector<int>, std::vector<int> > Anna(long long A) {
   return Anna_solver::Anna(A);
}
#include "Bruno.h"
#include <utility>
#include <vector>

#include <bits/stdc++.h>

using namespace std;

namespace Bruno_solver{
   const int M=1824;
   mt19937 rng(69420);
   long long Bruno(vector<int> v){
      long long val=uniform_int_distribution<long long>(0, (1ll<<60)-1)(rng);
      long long ans=(1ll<<60)-1;
      vector<int> id, d;
      for (int i=0; i<(int)v.size(); ++i){
         if (v[i]==1) id.push_back(i);
      }
      for (int i=0; i<(int)id.size()-1; ++i){
         d.push_back(id[i+1]-id[i]-1);
      }
      for (int i=0; i<(int)d.size()/60; ++i){
         vector<int> ord(60); iota(ord.begin(), ord.end(), 0);
         shuffle(ord.begin(), ord.end(), rng);
         long long a=0;
         for (int j=i*60; j<(i+1)*60; ++j){
            if (d[j]) a|=1ll<<ord[j%60];
         }
         ans&=a;
      }
      vector<int> ord(60); iota(ord.begin(), ord.end(), 0);
      shuffle(ord.begin(), ord.end(), rng);
      return ans^val;
   }
}

long long Bruno(std::vector<int> u) {
   return Bruno_solver::Bruno(u);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...