제출 #41317

#제출 시각아이디문제언어결과실행 시간메모리
41317MatheusLealVUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
4 ms512 KiB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;

int ans[300], n;

string zero;

void solve_add(int ini, int fim)
{
  int mid = (ini + fim)/2;

  if(ini == fim) return;

  string s = zero;

  for(int i = ini; i <= fim; i++) s[i] = '1';

  //cout<<ini<<" "<<fim<<"\n";

  for(int i = mid + 1; i <= fim; i++)
  {
    s[i] = '0';

    //cout<<"ADD STRING "<<s<<" -> "<<novo(s)<<"\n";

    add_element(s);

    s[i] = '1';
  }

  //cout<<"\n";

  solve_add(ini, mid), solve_add(mid + 1, fim);
}

void solve_check(int ini, int fim, vector<int> free)
{
  //cout<<ini<<" "<<fim<<"\n";

  int mid = (ini + fim)/2;

  string s = zero;

  vector<int> esq, dir;

  if(ini == fim)
  {
    //cout<<free.size()<<"\n";
    
    if(free.size()) ans[free[0]] = ini;

    return;
  }

  for(int i = 0; i < free.size(); i++) s[ free[i] ] = '1';

  for(int i = 0; i < free.size(); i++)
  {
    int p = free[i];

    s[p] = '0';

    if(check_element(s))  dir.push_back(p);

    else esq.push_back(p);

    s[p] = '1';
  }

  //for(auto x: dir) cout<<"DIR "<<x<<"\n";

  //for(auto x: esq) cout<<"ESQ "<<x<<'\n';

  solve_check(ini, mid, esq), solve_check(mid + 1, fim, dir);
}

vector<int> vini, resp;

vector<int> restore_permutation(int N_, int w, int r)
{
  n = N_;

  for(int i = 0; i < n; i++) zero.push_back('0'), vini.push_back(i);

  solve_add(0, n - 1);

  compile_set();

  solve_check(0, n - 1, vini);

  for(int i = 0; i < n; i++) resp.push_back(ans[i]);

  return resp;
}

컴파일 시 표준 에러 (stderr) 메시지

messy.cpp: In function 'void solve_check(int, int, std::vector<int>)':
messy.cpp:56:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < free.size(); i++) s[ free[i] ] = '1';
                  ~~^~~~~~~~~~~~~
messy.cpp:58:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < free.size(); i++)
                  ~~^~~~~~~~~~~~~
#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...