답안 #1040506

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1040506 2024-08-01T06:32:38 Z 김은성(#10995) How to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid) C++17
9.99998 / 100
1 ms 596 KB
#include "avoid.h"
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <deque>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
#include <time.h>
#include <random>
using namespace std;
const int robot = 75;
bool ch[100][1009];
bool ret2[10][10];
std::pair<int, int> scout(int R, int H) {
	int i, i2, j, k, ans = 0;
	for (i = 0; i < 10; i++) {
		vector<int> vec, vec2;
		for (j = 1; j <= 1000; j++) {
			if (j & (1 << i)){
				vec.push_back(j);
			}
			else{
				vec2.push_back(j);
			}
		}
		send(vec);
		send(vec2);
	}
	for(i=0; i<10; i++){
		for(i2=i+1; i2<10; i2++){
			vector<int> vec;
			for (j = 1; j <= 1000; j++) {
				if ((j & (1 << i)) && (j & (1<<i2))){
					vec.push_back(j);
				}
			}
			send(vec);
		}
	}
	vector<int> ret = wait();
	vector<int> crit;
	ans = 0;
	for(i=0; i<10; i++){
		if(ret[2*i] && ret[2*i+1])
			crit.push_back(i);
		else if(ret[2*i])
			ans |= (1<<i);
	}
	int cur = 20;
	for(i=0; i<10; i++){
		for(j=i+1; j<10; j++){
			ret2[i][j] = ret[cur++];
		}
	}
	if(crit.empty()){
		return make_pair(ans, ans);
	}
	int tot = 0, sub = 0;
	for(i=0; i<crit.size(); i++)
		tot |= (1<<crit[i]);
	int last = 0;
	for(i=0; i+1<crit.size(); i++){
		if(!ret2[crit[i]][crit[i+1]])
			last = 1-last;
		sub += last * (1<<(crit[i+1]));
	}
	return make_pair(ans+sub, ans+tot-sub);
	//end
	for(i=1; i<=1000; i++){
		for(j=1; j<=1000; j++){
			for(k=0; k<robot; k++){
				if(ret[k] != (ch[k][i] || ch[k][j]))
					break;
			}
			if(k==robot)
				return make_pair(i, j);
		}
	}
	return make_pair(-1, -1);
}

Compilation message

avoid.cpp: In function 'std::pair<int, int> scout(int, int)':
avoid.cpp:62:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |  for(i=0; i<crit.size(); i++)
      |           ~^~~~~~~~~~~~
avoid.cpp:65:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |  for(i=0; i+1<crit.size(); i++){
      |           ~~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Not correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Not correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Not correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
2 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
3 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
4 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
5 Correct 1 ms 596 KB Correct: 65 robot(s) used, 1 hour(s) passed
6 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
7 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
8 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
9 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
10 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
11 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
12 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
13 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
14 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed
15 Correct 1 ms 344 KB Correct: 65 robot(s) used, 1 hour(s) passed