제출 #1162367

#제출 시각아이디문제언어결과실행 시간메모리
1162367i271828Unscrambling a Messy Bug (IOI16_messy)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int ans[128];

vector<int> vals={};
void add_element(string x){
	cout<<"A";
	for (int i=0;i<4;i++) cout<<x[i];
	cout<<'\n';
}
void compile_set(){}
bool check_element(string x){
	cout<<"C";
	for (int i=0;i<4;i++) cout<<x[i];
	cout<<'\n';
	bool v;
	cin>>v;
	return v;
}

void add(int s,int e,int fs,int fe){
	if (s==e) return;
	bitset<128> x=0;
	for (int i=fs;i<=fe;i++) x[i]=1;
	int m=(s+e)>>1;
	for (int i=s;i<=m;i++){
		if (i>s) x[i-1]=0;
		x[i]=1;
		string xs;
		for (int i=0;i<128;i++) xs.push_back(x[i]+'0');
		add_element(xs);
	}
	add(s,m,m+1,e);
	add(m+1,e,s,m);
}

void find(int s,int e,bitset<128>& values, bitset<128>& flag){
	if (s==e){
		for (int i=0;i<128;i++){
			if (values[i]) ans[i]=s;
		}
		return;
	}
	bitset<128> x;
	bitset<128> left=0;
	bitset<128> right=0;
	for (int i=0;i<128;i++){
		if (values[i]){
			x=flag;
			x[i]=1;
			string xs;
			for (int i=0;i<128;i++) xs.push_back(x[i]+'0');
			
			if (check_element(xs)){
				left[i]=1;
			}else{
				right[i]=1;
			}
		}
	}
	int m=(s+e)>>1;
	find(s,m,left,right);
	find(m+1,e,right,left);
}

void restore_permutation(int N, int w, int r, int* result){
	add(0,N-1,1,0);
	compile_set();
	bitset<128> values=0;
	for (int i=0;i<N;i++) values[i]=1;
	bitset<128> flag=0;
	find(0,N-1,values,flag);
	for (int i=0;i<N;i++) result[i]=ans[i];
}

컴파일 시 표준 에러 (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
      |         ^~~~
/usr/bin/ld: /tmp/ccGiF7VR.o: in function `check_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
grader.cpp:(.text+0x4b0): multiple definition of `check_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; /tmp/ccDZPsuw.o:messy.cpp:(.text+0x180): first defined here
/usr/bin/ld: /tmp/ccGiF7VR.o: in function `add_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
grader.cpp:(.text+0x630): multiple definition of `add_element(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; /tmp/ccDZPsuw.o:messy.cpp:(.text+0xd0): first defined here
/usr/bin/ld: /tmp/ccGiF7VR.o: in function `compile_set()':
grader.cpp:(.text+0x880): multiple definition of `compile_set()'; /tmp/ccDZPsuw.o:messy.cpp:(.text+0x170): first defined here
/usr/bin/ld: /tmp/ccGiF7VR.o: in function `main':
grader.cpp:(.text.startup+0x19f): undefined reference to `restore_permutation(int, int, int)'
collect2: error: ld returned 1 exit status