제출 #1305763

#제출 시각아이디문제언어결과실행 시간메모리
1305763thelegendary08Unscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
2 ms588 KiB
#include<bits/stdc++.h>
#define f0r(i,n) for(int i = 0; i < n; i++)
#define FOR(i,k,n) for(int i = k; i < n; i++)
#define pb push_back
#define mp make_pair
#define eb emplace_back
#define vi vector<int>
#define pii pair<int,int>
#define dout(x); cout<<x<<' '<<#x<<endl;
#define dout2(x,y); cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<endl;
#define vout(v); for(auto u : v)cout<<u<<' '; cout<<endl;
using namespace std;
int n;
#include "messy.h"
vi ans;
void gen(int l, int r){
	if(l==r)return;
	int mid = l + r >> 1; 
	string s = ""; f0r(i,n){
		if(i>=l&&i<=r)s+='0'; else s+='1';
	}
	FOR(i,l,mid+1){
		s[i]='1'; add_element(s); s[i] = '0';
	}
	gen(l,mid); gen(mid+1,r);
}
void find(int l, int r, vi &a){
	if(l==r){ans[a[0]]=l; return;}
	string s = ""; f0r(i,n)s+='1'; for(auto u : a)s[u] = '0';
	vi lef, rig; 
	for(auto u : a){
		s[u] = '1'; 
		bool ret = check_element(s); if(ret)lef.pb(u); else rig.pb(u);
		s[u] = '0';
	}
	int mid = l + r >> 1; 
	find(l,mid,lef); find(mid+1,r,rig);
}
std::vector<signed> restore_permutation(signed n, signed w, signed r) {
	::n=n; ans.resize(n);
    gen(0,n-1);
    compile_set();
    vi a; f0r(i,n)a.pb(i); find(0,n-1,a);
    return ans;
}

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

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...