제출 #1305111

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

mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

int N;

bool ans[110][110];
bool ansh[110][110];
bool ansv[110][110];
int buf;
vector<int> h,v;

void print(){
	printf("?\n");
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++) printf("%d",(int)ans[i][j]);
		printf("\n");
	}
	
	fflush(stdout);
}

void answer(){
	printf("!\n");
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++) printf("%d",(int)ans[i][j]);
		printf("\n");
	}
	
	fflush(stdout);
}

bool check(int i, int j){
	if(ansh[0][0]){
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++){
				ans[i][j] = 0;
			}
		}
		
		ans[0][0] = 1;
		ans[i][j] = 1;
		
		print();
		
		int h;
		scanf(" %d",&h);
		
		if(h % N == 0) return 1;
		return 0;
	}
	else{
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++){
				ans[i][j] = 0;
			}
		}
		
		ans[0][0] = 1;
		ans[i][j] = 1;
		
		print();
		
		int h;
		scanf(" %d",&h);
		
		if(h % N == 0) return 0;
		return 1;
	}
}

int main(){
	
	scanf(" %d",&N);
	
	for(int i = 0; i < N; i++){
		h.push_back(i);
		v.push_back(i);
	}
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			ans[i][j] = false;
			ansh[i][j] = false;
			ansv[i][j] = false;
		}
	}
	
	
	for(int j = 0; j < N; j++){
		ans[0][j] = true; 
	}
	
	print();
	scanf(" %d",&buf);
	
	if(buf == N * N){
		answer();
		return 0;
	}
	
	int num1 = buf;
	
	ans[0][0] = false;
	
	printf();
	scanf(" %d",&buf);
	
	if(buf % N == 0){
		ansh[0][0] = 1;
		h.erase(h.begin(),h.begin() + 1);
	}
	else{
		if(buf == num1){
			ansh[0][0] = 1;
			h.erase(h.begin(),h.begin() + 1);
		}
		else{
			ansv[0][0] = 1;
			v.erase(v.begin(),v.begin() + 1);
		}
	}
	
	while(!h.empty() && !v.empty()){
		int x = rng() % h.size();
		int y = rng() % v.size();
		
		for(int i = 0; i < N; i++){
			if(check(h[x],v[y])){
				ansh[h[x]][v[y]] = 1;
				
				h.erase(h.begin() + x, h.begin() + x + 1);
			}
			else{
				ansv[h[x]][v[y]] = 1;
				
				v.erase(v.begin() + y, v.begin() + y + 1);
			}
		}
	}
	
	if(h.empty()){
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++){
				ans[i][j] = ansh[i][j];
			}
		}
	}
	else if(v.empty()){
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++){
				ans[i][j] = ansv[i][j];
			}
		}
	}
	
	answer();
}	

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

Main.cpp: In function 'int main()':
Main.cpp:109:15: error: too few arguments to function 'int printf(const char*, ...)'
  109 |         printf();
      |         ~~~~~~^~
In file included from /usr/include/stdio.h:980,
                 from /usr/include/c++/13/cstdio:42,
                 from /usr/include/c++/13/ext/string_conversions.h:45,
                 from /usr/include/c++/13/bits/basic_string.h:4109,
                 from /usr/include/c++/13/string:54,
                 from /usr/include/c++/13/bitset:52,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:52,
                 from Main.cpp:1:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:84:1: note: declared here
   84 | printf (const char *__restrict __fmt, ...)
      | ^~~~~~
Main.cpp: In function 'bool check(int, int)':
Main.cpp:50:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |                 scanf(" %d",&h);
      |                 ~~~~~^~~~~~~~~~
Main.cpp:68:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   68 |                 scanf(" %d",&h);
      |                 ~~~~~^~~~~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:77:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   77 |         scanf(" %d",&N);
      |         ~~~~~^~~~~~~~~~
Main.cpp:98:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   98 |         scanf(" %d",&buf);
      |         ~~~~~^~~~~~~~~~~~
Main.cpp:110:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  110 |         scanf(" %d",&buf);
      |         ~~~~~^~~~~~~~~~~~