답안 #792826

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
792826 2023-07-25T09:12:15 Z beaconmc Minerals (JOI19_minerals) C++14
0 / 100
3 ms 632 KB
#include "minerals.h"
#include <bits/stdc++.h>
 
typedef long long ll;
 
 
 
#define FOR(i, x, y) for(ll i=x; i<y; i++)
#define FORNEG(i, x, y) for(ll i=x; i>y; i--)
#define fast() ios_base::sync_with_stdio(false);cin.tie(NULL)
 


 
std::set<ll> machine;
int query(int a){
  if (machine.count(a)){
    machine.erase(a);
  }else{
    machine.insert(a);
  }

  return Query(a);
}
 
void solve(int N, std::vector<std::vector<ll>> top, std::vector<std::vector<ll>> bot) {
  using namespace std;
  cout << N << endl;

  cout << endl;
  ll sus = 0;
 
  while (!(top.size() == bot.size() && bot.size() == N)){
    sus++;
 
    vector<vector<ll>> temp;
    for (auto&i : bot){
      if (i.size() == 1){
        temp.push_back(i);
        continue;
      }
      vector<ll> temp2;
      FOR(j,0,i.size()/2){
        temp2.push_back(i[j]);
      }
      temp.push_back(temp2);
      temp2.clear();
 
      FOR(j, i.size()/2, i.size()){
        temp2.push_back(i[j]);
      }
      temp.push_back(temp2);
    }
    bot = temp;
    temp.clear();
 
 
    ll ind = 0;
 
 
 
    FOR(i,0,top.size()){
      ll tempflag = -1;
 
      if (top[i].size() == 1){
        ind += 1;
        temp.push_back(top[i]);
        continue;
      }
 
 
      vector<ll> first;
      vector<ll> second;
      ll curval = 0;

      if (sus%2 == 0){
        if (machine.count(bot[ind][0])) tempflag = (sus + 1)%2;
        else tempflag = sus;
      }else{
        if (machine.count(bot[ind][0])) tempflag = sus;
        else tempflag = (sus+1)%2;
      }

      for (auto&j : bot[ind]){

        curval = query(j);
  
      }
 
 
 
      for (auto&j : top[i]){
        ll result = query(j);
 
        if (result != curval){
          curval = result;
          first.push_back(j);
        }else{
          second.push_back(j);
        }
      }
      if (tempflag%2==1){
        temp.push_back(first);
        temp.push_back(second);
      }
      else{
        temp.push_back(second);
        temp.push_back(first);
 
      }
 
      ind += 2;
    }
 
    top = temp;
 
  }


  FOR(i,0,N){
    Answer((int) top[i][0],(int) bot[i][0]);
  }
}

void Solve(int N) {
  using namespace std;
  vector<vector<ll>> top;
  vector<vector<ll>> bot;
  top.push_back({});
  bot.push_back({});

  ll cur = 0;


  FOR(i,1, 2*N+1){
    ll result = query(i);
    if (result == cur + 1){
      cur++;
      top[0].push_back(i);
    }else{
      bot[0].push_back(i);
    }


    if (top[0].size() == bot[0].size()){
      solve(top[0].size(), top, bot);
      top = {{}};
      bot = {{}};
    }
  }






}

Compilation message

minerals.cpp: In function 'void solve(int, std::vector<std::vector<long long int> >, std::vector<std::vector<long long int> >)':
minerals.cpp:33:51: warning: comparison of integer expressions of different signedness: 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   33 |   while (!(top.size() == bot.size() && bot.size() == N)){
      |                                        ~~~~~~~~~~~^~~~
minerals.cpp:8:35: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   43 |       FOR(j,0,i.size()/2){
      |           ~~~~~~~~~~~~~~           
minerals.cpp:43:7: note: in expansion of macro 'FOR'
   43 |       FOR(j,0,i.size()/2){
      |       ^~~
minerals.cpp:8:35: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   49 |       FOR(j, i.size()/2, i.size()){
      |           ~~~~~~~~~~~~~~~~~~~~~~~  
minerals.cpp:49:7: note: in expansion of macro 'FOR'
   49 |       FOR(j, i.size()/2, i.size()){
      |       ^~~
minerals.cpp:8:35: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   62 |     FOR(i,0,top.size()){
      |         ~~~~~~~~~~~~~~             
minerals.cpp:62:5: note: in expansion of macro 'FOR'
   62 |     FOR(i,0,top.size()){
      |     ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 632 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -