제출 #1331857

#제출 시각아이디문제언어결과실행 시간메모리
1331857huutuanHow to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid)C++20
25 / 100
1 ms456 KiB
#include "avoid.h"

#include <bits/stdc++.h>

using namespace std;

pair<int, int> scout(int R, int H){
   if (R==10 && H==1){
      for (int i=0; i<10; ++i){
         vector<int> vv;
         for (int j=1; j<=1000; ++j) if (j>>i&1) vv.push_back(j);
         send(vv);
      }
      auto v=wait();
      int ans=0;
      for (int i=0; i<10; ++i) ans|=v[i]<<i;
      return {ans, ans};
   }
   if (R==20 && H==20){
      int l=1, r=1000;
      while (l<=r){
         int mid=(l+r)>>1;
         vector<int> vv(mid-l+1);
         iota(vv.begin(), vv.end(), l);
         send(vv);
         auto v=wait();
         if (v[0]) r=mid-1;
         else l=mid+1;
      }
      pair<int, int> ans={-1, -1};
      ans.first=l;
      l=ans.first+1, r=1000;
      while (l<=r){
         int mid=(l+r)>>1;
         vector<int> vv(mid-l+1);
         iota(vv.begin(), vv.end(), l);
         send(vv);
         auto v=wait();
         if (v[0]) r=mid-1;
         else l=mid+1;
      }
      ans.second=l;
      if (ans.second==1001) ans.second=ans.first;
      return ans;
   }
   if (R==30 && H==2){
      for (int i=0; i<10; ++i){
         vector<int> v0, v1;
         for (int j=1; j<=1000; ++j){
            if (j>>i&1) v1.push_back(j);
            else v0.push_back(j);
         }
         send(v0); send(v1);
      }
      auto v=wait();
      int msk=0, msk2=0;
      vector<int> bits;
      for (int i=0; i<10; ++i){
         if (v[i<<1]!=v[i<<1|1]) msk|=v[i<<1|1]<<i;
         else bits.push_back(i), msk2|=1<<i;
      }
      msk2|=msk;
      if (bits.empty()) return {msk, msk};
      else if ((int)bits.size()==1){
         return {msk, msk|(1<<bits[0])};
      }else{
         pair<int, int> ans={msk, msk|(1<<bits[0])};
         for (int i=1; i<(int)bits.size(); ++i){
            vector<int> vv;
            for (int j=1; j<=1000; ++j){
               if ((j>>bits[i]&1)==0 && (j>>bits[0]&1)==0) vv.push_back(j);
            }
            send(vv);
         }
         v=wait();
         for (int i=1; i<(int)bits.size(); ++i){
            if (v[i-1]){
               ans.second|=1<<bits[i];
            }else{
               ans.first|=1<<bits[i];
            }
         }
         return ans;
      }
   }
   vector<long long> vv={75626352, 63996900, 75324877, 13647262, 90459427, 9420633, 57541333, 37343481, 27427594, 39084350, 1240093, 52447399, 68627674, 63827327, 82776250, 94708605, 75432366, 44957474, 4687168, 21857990, 74869950, 14953755, 42587884, 10019375, 14412520, 9431058, 53093916, 44685162, 77415302, 63250314, 74625884, 32423328, 75207123, 80551256, 4358133, 92746130, 74473975, 41665905, 29806666, 1932857, 70088681, 46011420, 53771811, 48957955, 21200224, 60807226, 49379934, 38450920, 66808273, 41658963, 43515533, 9174506, 7434903, 51333281, 47820992, 44408661, 99690935, 92648667, 61994775, 57765048, 86253063, 47641728, 82498003, 16163314, 44526124, 31048311, 29748652, 52355940, 36540635, 76491851, 30593287, 68706057, 73016539, 65167143, 81745589, 78828294, 65304828, 79501268, 40314931, 93798869, 34827364, 29990098, 73921567, 59475194, 35315971, 13888862, 62558278, 59359169, 52237718, 61381274, 5926113, 36749417, 73641727, 61265517, 39609056, 93372873, 74173230, 23046148, 52989607, 12403299, 78867074, 23509107, 9257171, 89123603, 47273113, 11327726, 95421762, 12741186, 72119245, 60565836, 35648962, 77006752, 93050798, 99773926, 39112788, 37195278, 83349552, 76604960, 65969338, 88468912, 6574032, 40292296, 29357570, 41709091, 16081336, 85296496, 48657479, 29133921, 82007083, 42930784, 8004173, 87723949, 79311979, 53089499, 85615093, 2666810, 74575790, 7014764, 20663973, 63099296, 44344709, 33327492, 35731219, 70538712, 33893798, 74371287, 16407910, 65306331, 8130783, 40104813, 35894046, 51750838, 67258561, 72285436, 50250300, 52357330, 44871416, 79287336, 18788824, 35019384, 55530964, 8134323, 23361379, 43308175, 47395365, 21802529, 59912114, 99221073, 90400876, 38055006, 48292713, 29103114, 45316644, 31080200, 28945448, 45116529, 64214158, 6263587, 51146053, 35201127, 76464776, 43000222, 19966240, 71982, 63916124, 27199380, 17969027, 90056762, 79850777, 40908654, 10101185, 67563112, 96689758, 27134696, 7448208, 63336602, 57487125, 17838884, 88989082, 44660208, 10271394, 16282076, 91152169, 45581857, 81764122, 41853686, 42911179, 32396134, 10309549, 19461219, 24093041, 88049951, 44481633, 20769995, 69679237, 17347594, 15881643, 12293085, 21110290, 95324621, 42661766, 39372211, 13411289, 33492547, 40044513, 19824239, 16209578, 33554704, 84683152, 65188127, 32630036, 92756893, 38930041, 59138833, 50857363, 42296385, 63328565, 93608812, 17982831, 42559803, 82788489, 64394900, 8068148, 77830033, 63363511, 91011252, 23090720, 86762543, 21687802, 41100155, 41627318, 62903966, 92527874, 72517433, 28546367, 18170662, 24835473, 36087983, 30262603, 15488961, 4446253, 1617450, 45216615, 23499666, 2725064, 35803791, 55036052, 17408667, 69094635, 79044682, 51237215, 7369264, 5759200, 58774319, 97605717, 53125111, 17008403, 73926866, 10359672, 53085445, 86767173, 91944706, 30960431, 78095128, 94451656, 53905802, 71988673, 15097992, 98249175, 10591636, 15049203, 82976334, 46341894, 70374084, 97043428, 46546535, 2992687, 95583617, 66447336, 45542971, 16437488, 10319013, 15215030, 89001895, 15205787, 24319425, 15503669, 61380019, 61656441, 38194626, 47520169, 31217214, 90251068, 72536002, 84391763, 5292864, 12297642, 35238622, 91113013, 80675026, 47089935, 100090117, 83859859, 82012034, 58459836, 45356829, 86039719, 62359711, 64221759, 3445618, 90829233, 79762552, 16426492, 97344449, 18325627, 15561372, 58769023, 59402954, 56002927, 5332119, 97429696, 94397139, 54127154, 11413026, 40474723, 83587272, 92478508, 13403898, 8064995, 57298258, 19881774, 23866138, 66219028, 52470369, 38930218, 67613885, 54358303, 2178757, 52872362, 74544730, 84171424, 17308890, 50254293, 56871539, 38037925, 40335865, 80739135, 6842978, 94598312, 47385010, 35203799, 87055619, 41771086, 60086899, 73390444, 86290593, 46130501, 69843547, 1940753, 33611950, 43798670, 72703598, 82222246, 37379677, 15469483, 5272490, 19913510, 58090822, 63643309, 64215389, 36402318, 11587591, 79927386, 52506463, 77305562, 99675136, 46208144, 70652666, 11826673, 33994049, 70274981, 66543085, 20403986, 33411436, 25997063, 31841979, 55942201, 98903142, 77003232, 48416019, 84679996, 36202652, 22984249, 58989168, 68686592, 63277394, 50013386, 27251190, 42902679, 17021170, 28370983, 19543580, 66740030, 27406017, 93997257, 9484337, 92879130, 30451282, 82864328, 64304114, 84756098, 80227437, 88262500, 18782814, 8408670, 36779257, 28023604, 24210383, 31678692, 21023559, 80670361, 51362870, 15575501, 38434463, 41156416, 41877153, 62211648, 99350624, 94697070, 94874065, 12376048, 92536243, 38833769, 26096479, 56530703, 26043891, 42698839, 89351282, 48144719, 60180168, 50056730, 53061782, 75806289, 56142870, 95019330, 57176091, 82595785, 74183840, 5397216, 55402463, 97713720, 58095606, 71980385, 36138616, 71604020, 64434371, 11528548, 33956236, 84184392, 61663277, 96720146, 92645524, 94331046, 39762297, 49419211, 18880258, 12722063, 89251873, 71219433, 78337037, 68733017, 10699203, 63863360, 3047630, 70438723, 65821817, 65582490, 46579153, 60975261, 82574467, 83667624, 89090698, 19372806, 53903291, 18712416, 68223319, 10846171, 48516027, 81949102, 56014043, 71568281, 11088141, 8544301, 48585558, 30222126, 88531199, 61804283, 20912748, 38557261, 20139615, 39056411, 58054219, 45794622, 22573726, 31381611, 17758601, 49400256, 64702824, 96768049, 20064623, 81649448, 79036099, 23831861, 48503974, 70947907, 14176889, 49972978, 39379842, 64284483, 42224852, 25107805, 1127789, 40434896, 17268270, 93015893, 10132788, 98278021, 45016923, 35599932, 94048513, 27446848, 68704193, 13743999, 43057692, 22070107, 88560674, 52203013, 7502704, 47510202, 82669278, 73141929, 10909197, 9973681, 28782283, 79428036, 6178583, 27707900, 88938833, 33314727, 96657313, 77722185, 64476859, 18628314, 32869268, 96742139, 70801, 37780719, 75438446, 79360208, 87565338, 73916736, 53695249, 24476815, 53829203, 70792214, 52133394, 87001562, 73563165, 65679095, 99499664, 45213254, 64463354, 41715353, 32112301, 82078572, 38107294, 76520199, 53323595, 46903330, 57940893, 21585600, 41749371, 76007091, 86283870, 44650911, 77483150, 54518068, 57213774, 34689254, 27241455, 82486582, 25988451, 65945766, 33481909, 35942792, 62911690, 77693562, 82361429, 3134976, 50585601, 5628993, 24036185, 26050102, 26491722, 37183830, 56245975, 85552124, 8596888, 78984383, 67834949, 91238638, 5593006, 43653299, 87127227, 19850727, 65997552, 91545293, 4091867, 21359622, 25292110, 32452184, 71600527, 47424944, 41163335, 84873990, 53740505, 21872214, 53884741, 51670823, 65732572, 44658405, 15386389, 41285228, 60823720, 33024288, 27991127, 23373121, 54385267, 78829452, 98285465, 31804896, 98182080, 57158752, 19519984, 23299105, 39867896, 97781407, 14400080, 52603004, 17152349, 79801492, 10988910, 71429507, 21709677, 45755031, 24327247, 38713110, 4161474, 90840727, 50167591, 5723130, 69900207, 70092049, 73055985, 10834512, 98808488, 59639554, 16177657, 45512965, 84595493, 61821392, 20121198, 46272587, 11133484, 70464923, 45646292, 53680654, 79713499, 74176668, 23408066, 58712234, 64640523, 57350259, 68908129, 45527411, 5206431, 2270433, 64603424, 60880586, 80509358, 58308712, 74542126, 9269020, 15110998, 56850826, 24991692, 7414559, 25566429, 5139670, 3614386, 46604797, 49868136, 95910201, 98114201, 89046617, 81361681, 92424052, 4883213, 4718819, 63546871, 33066895, 10852187, 49393184, 93370289, 44394432, 96321288, 34015842, 63047639, 22875258, 9477360, 93488107, 81977140, 84139740, 99185629, 64877596, 92125121, 78858776, 23450482, 81175315, 55428564, 14845504, 11088414, 12611377, 15968359, 2509438, 21934389, 30200068, 79423700, 48435623, 50746952, 38536653, 31893462, 67914541, 32918928, 62865339, 89668170, 37175392, 38229297, 20821905, 45901567, 3848062, 7820871, 99129243, 5183862, 61488514, 76487732, 66281834, 56616719, 82869814, 52016042, 80764252, 77185773, 96939945, 46803756, 79449943, 74288354, 49360730, 20157656, 92004754, 4287077, 18357737, 56997048, 75644530, 97318982, 58951514, 60305711, 44630985, 99705240, 55091063, 10468563, 49535531, 93556999, 51529441, 21712473, 86096612, 47755867, 83068626, 18008607, 95669942, 58026883, 13772968, 38601849, 65163750, 19134814, 89503415, 96772745, 959425, 79614585, 96174735, 92011178, 19177430, 31079067, 94862291, 43401354, 7378577, 12191500, 45307220, 17497317, 18645469, 94471950, 35904992, 46895431, 28908549, 60627948, 25439441, 79715331, 17240586, 88601080, 49610553, 90695824, 72799468, 24105980, 48806168, 32618132, 57269249, 26485808, 86338894, 54243848, 49676912, 58669742, 43540790, 94065538, 711412, 30066729, 35233161, 89590683, 17635431, 67278403, 57970550, 65465217, 49981824, 58625183, 26959437, 52194088, 41787976, 64082437, 86358075, 53886386, 85876458, 12724927, 97177453, 80082559, 15366183, 45714565, 83876751, 18723953, 40511527, 50080828, 68696181, 98635358, 22783667, 34468097, 34920632, 92939714, 44493779, 15131544, 86413933, 27505918, 20362970, 69696845, 14264890, 65922680, 26742960, 10046112, 25988377, 10587987, 17672702, 46071414, 11362830, 80201837, 55250701, 62043111, 92285881, 54013572, 36843097, 78480444, 91846688, 13873140, 44902667, 71135907, 27109558, 21017986, 37254109, 19399642, 23716149, 56042754, 66010061, 79311064, 95412335, 37517443, 68961385, 20683179, 12432317, 76792051, 40376724, 73561521, 64884642, 19622681, 80443871, 55349583, 10337466, 61275600, 98660080, 78125760, 1202230, 49207901, 89708409, 69358684, 71161926, 41106979, 88109871, 32478344, 16796714, 52250815, 19304335, 79233047, 46208853, 57781502, 11467877, 43850928, 75765121, 26636958, 63562986, 83419545, 85611217, 52705900, 48067661, 74891328, 21401594, 34107191, 57317574, 30678014, 20055655, 57496998, 28038488, 32544326, 1635588, 89554953, 33667707, 12735050, 99813812, 44065167, 54435928, 60706856, 18773397, 91279609, 4038267, 4995835, 1442208, 72993274, 41573187, 86375614, 8703238, 36844526, 37501383, 72400997, 85107411, 28752152, 81062343, 9638405, 13486663, 37199220, 53706331, 6912877, 60592391, 79254834, 6410619, 51576111, 16447591, 20634778, };
   for (int i=0; i<40; ++i){
      vector<int> v0, v1;
      for (int j=1; j<=1000; ++j){
         if (vv[j-1]>>i&1) v1.push_back(j);
         else v0.push_back(j);
      }
      send(v1);
   }
   auto v=wait();
   long long o=0;
   for (int i=0; i<40; ++i) o|=((long long)v[i])<<i;
   for (int i=1; i<=1000; ++i) for (int j=i; j<=1000; ++j) if ((vv[i-1]|vv[j-1])==o){
      return {i, j};
   }
   return {-1, -1};
}
#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...