답안 #815886

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
815886 2023-08-09T02:02:18 Z yeyso Minerals (JOI19_minerals) C++14
0 / 100
2 ms 336 KB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;
void Solve(int N) {
  int a = 0;
  int b = 0;
    //vector<vector<int>> res(2 * N + 1, vector<int>(15, 0));
    vector<int> arr(2 * N + 1, 0);
    vector<int> res(2 * N + 1, 1);
    for(int k = 0; k <= 14; k ++){
      for(int i = 0; i <= 2 * N; i ++){
        if(k > 0){
              if(i & (1 << k)){
                  if(i & (1 << (k - 1))){} else {
                    a = Query(i);
                    arr[i] ^= 1;
                  }
              } else {
                if(i & (1 << (k - 1))){
                    a = Query(i);
                    arr[i] ^= 1;
                }
              }
        } else {
          if(i & (1 << 0)){
              a = Query(i);
              arr[i] ^= 1;
          }
        }
          
          //if(not i & (1 << k) and i & (1 << (k - 1))){
            //  a = Query(i);
          //}
      }
      for(int i = 1; i <= 2 * N; i ++){
        //cout << arr[i];
          b = Query(i);
          if(a == b){
              // Then b is paired with something where the kth bit is 1
              //res[a][k] = 1;
              
              res[i] += (1 << k);
          }
          b = Query(i);
      }
      //cout << "\n";
      for(int i = 1; i <= 2 * N; i ++){
        if(i & (1 << k)){
          //a = Query(i);
            //arr[i] ^= 1;
        }
      }
    }
    /*


    N queries to set up
    2N queries for each one
    N queries to remove
    Repeat all log(n) times

    N / 2 queries to set up
    4N queries for each one
    Repeat log(n) times
    = 4N * 15

    */
    set<pair<int, int>> ans;
    for(int i = 0; i < res.size(); i ++){
        ans.insert({min(i , res[i] -1), max(i , res[i] - 1)});
        //Answer(i, res[i]);
    }
    for(auto itx = ++ans.begin(); itx != ans.end(); ++itx){
        ////Answer((*itx).first, (*itx).second);
        //cout << (*itx).first << " " << (*itx).second << "\n";
    }


}

/*
g++ -std=gnu++17 -O2 -Wall -pipe -static -o minerals grader.cpp minerals.cpp
4
1 5
2 6
3 4
7 8



*/

Compilation message

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:69:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(int i = 0; i < res.size(); i ++){
      |                    ~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -