답안 #130856

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
130856 2019-07-16T07:36:23 Z 이온조(#3169) Snake (CEOI08_snake) C++14
20 / 100
2 ms 376 KB
#include "snakelib.h"
#include <bits/stdc++.h>
using namespace std;

const bool DBG = 0;

int K;
char a1, a2;

void norm(int &x) {
	x = min(x, 12121);
	x = max(x, 0);
}

void ask(int a, int b, char *A1, char *A2) {
	norm(a); norm(b);
	if(DBG) {
		printf("a: %d, b: %d\n", a, b);
		char c, d;
		scanf(" %c %c", &c, &d);
		*A1 = c; *A2 = d;
	}
	else ask_snake(a, b, A1, A2);
}

void tell(int l) {
	if(DBG) printf("my answer: %d\n", l);
	else tell_length(l);
}

int main() {
	if(DBG) scanf("%d",&K);
	else K = get_speed();
	// ask(4040, 8080, &a1, &a2);
	// if(DBG) printf("recieved %c %c\n", a1, a2);

	// int l1, r1, l2, r2;
	// if(a1 == 'f' || a1 == 's') l1 = 0, r1 = 4040;
	// else if(a2 == 'f' || a2 == 's') l1 = 4041, r1 = 8080;
	// else l1 = 8081, r1 = 12121;

	// if(a2 == 'b' || a2 == 's') l2 = 8080, r2 = 12121;
	// else if(a1 == 'b' || a1 == 's') l2 = 4040, r2 = 8079;
	// else l2 = 0, r2 = 4039;

	int l1 = 0, r1 = 12121, l2 = 0, r2 = 12121;
	int cnt = 13;
	while(cnt--) {
		int m1 = l1+r1 >> 1, m2 = l2+r2+1 >> 1;
		if(DBG) printf("[%d, %d], [%d, %d]\n", l1, r1, l2, r2);
		ask(m1, m2, &a1, &a2);
		if(a1 == 's') r1 = m1;
		else l1 = m1 + 1, r1 += K;
		if(a2 == 's') l2 = m2, r2 += K;
		else r2 = m2 - 1;
		norm(l1); norm(r1);
		norm(l2); norm(r2);
	}
	tell(r2-r1 + l2-l1 + 2 >> 1);
	return 0;
}

Compilation message

snake.cpp: In function 'int main()':
snake.cpp:49:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int m1 = l1+r1 >> 1, m2 = l2+r2+1 >> 1;
            ~~^~~
snake.cpp:49:34: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int m1 = l1+r1 >> 1, m2 = l2+r2+1 >> 1;
                             ~~~~~^~
snake.cpp:59:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  tell(r2-r1 + l2-l1 + 2 >> 1);
       ~~~~~~~~~~~~~~^~~
snake.cpp: In function 'void ask(int, int, char*, char*)':
snake.cpp:20:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c %c", &c, &d);
   ~~~~~^~~~~~~~~~~~~~~~~~
snake.cpp: In function 'int main()':
snake.cpp:32:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  if(DBG) scanf("%d",&K);
          ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB your estimate differs too much (1 units)
2 Correct 2 ms 252 KB Output is correct: estimate ok. 13 calls needed
3 Incorrect 2 ms 248 KB your estimate differs too much (10700 units)
4 Correct 2 ms 376 KB Output is correct: estimate ok. 13 calls needed
5 Incorrect 2 ms 376 KB your estimate differs too much (11938 units)
6 Incorrect 2 ms 248 KB your estimate differs too much (6061 units)
7 Incorrect 2 ms 248 KB your estimate differs too much (6064 units)
8 Incorrect 2 ms 252 KB your estimate differs too much (6091 units)
9 Incorrect 2 ms 248 KB your estimate differs too much (6097 units)
10 Incorrect 2 ms 248 KB your estimate differs too much (6106 units)
11 Incorrect 2 ms 248 KB your estimate differs too much (6117 units)
12 Incorrect 2 ms 248 KB your estimate differs too much (12121 units)
13 Incorrect 2 ms 248 KB your estimate differs too much (6130 units)
14 Incorrect 2 ms 248 KB your estimate differs too much (2 units)
15 Correct 2 ms 376 KB Output is correct: estimate ok. 13 calls needed
16 Incorrect 2 ms 248 KB your estimate differs too much (1 units)
17 Incorrect 2 ms 376 KB your estimate differs too much (13707 units)
18 Correct 2 ms 248 KB Output is correct: estimate ok. 13 calls needed
19 Incorrect 2 ms 248 KB your estimate differs too much (11722 units)
20 Incorrect 2 ms 248 KB your estimate differs too much (11906 units)