Submission #366118

# Submission time Handle Problem Language Result Execution time Memory
366118 2021-02-13T08:30:41 Z ijxjdjd Highway design (CEOI12_highway) C++14
30 / 100
2 ms 1392 KB
#include <bits/stdc++.h>
#include "office.h"
#define FR(i, N) for (int i = 0; i < int(N); i++)
#define all(x) begin(x), end(x)

using namespace std;

using ll = long long;
//
//int isOnLine(int a, int j, int k) {
//    return 1;
//}
//int GetN() {
//    return 1;
//}
//void Answer(int a, int b, int c, int d) {
//}
int main() {
	cin.tie(0);
	cin.sync_with_stdio(0);
	int N = GetN();
	bool first = isOnLine(1, 2, 3);
    bool second = isOnLine(4, 5, 6);
	if (first) {
        vector<int> left;
        for (int i = 4; i <= N; i++) {
            left.push_back(i);
        }
        vector<int> ans;
        for (int i = 0; i < left.size(); i+=2) {
            if (!isOnLine(1, left[i], (i+1 < left.size() ? left[i+1] : 2))) {
                if (!isOnLine(1, 2, left[i])) {
                    ans.push_back(left[i]);
                }
                else {
                    ans.push_back(left[i+1]);
                }
                if (ans.size() == 2) {
                    Answer(ans[0], ans[1], 1, 2);
                }
            }
        }
	}
	else if (second) {
        vector<int> left;
        for (int i = 1; i <= N; i++) {
            if (i < 4 || i > 6) {
                left.push_back(i);
            }
        }
                vector<int> ans;

        for (int i = 0; i < left.size(); i+=2) {
            if (!isOnLine(1, left[i], (i+1 < left.size() ? left[i+1] : 2))) {
                if (!isOnLine(1, 2, left[i])) {
                    ans.push_back(left[i]);
                }
                else {
                    ans.push_back(left[i+1]);
                }
                if (ans.size() == 2) {
                    Answer(ans[0], ans[1], 1, 2);
                }
            }
        }
	}
	else {
        pair<pair<int, int>, int> pos[3] = {{{1, 2}, 3}, {{2, 3}, 1}, {{1, 3}, 2}};
        for (auto& p : pos) {
            for (int j = 4; j <= 6; j++) {
                if (isOnLine(p.first.first, p.first.second, j)) {
                    for (int k = 4; k <= 6; k++) {
                        if (!isOnLine(p.first.first, p.first.second, k)) {
                            Answer(p.first.first, p.first.second, k, p.second);
                        }
                    }
                }
            }
        }
	}
	return 0;
}

Compilation message

highway.cpp: In function 'int main()':
highway.cpp:30:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |         for (int i = 0; i < left.size(); i+=2) {
      |                         ~~^~~~~~~~~~~~~
highway.cpp:31:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |             if (!isOnLine(1, left[i], (i+1 < left.size() ? left[i+1] : 2))) {
      |                                        ~~~~^~~~~~~~~~~~~
highway.cpp:53:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         for (int i = 0; i < left.size(); i+=2) {
      |                         ~~^~~~~~~~~~~~~
highway.cpp:54:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             if (!isOnLine(1, left[i], (i+1 < left.size() ? left[i+1] : 2))) {
      |                                        ~~~~^~~~~~~~~~~~~
office.c: In function 'int isOnLine(int, int, int)':
office.c:85:13: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
   85 |     _Fin(0, "Protocol error");
      |             ^~~~~~~~~~~~~~~~
office.c:88:13: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
   88 |     _Fin(0, "Protocol error");
      |             ^~~~~~~~~~~~~~~~
office.c:92:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
   92 |     _Fin(false, "Too many questions");
      |                 ^~~~~~~~~~~~~~~~~~~~
office.c:83:7: warning: unused variable 'i' [-Wunused-variable]
   83 |   int i;
      |       ^
office.c: In function 'void Answer(int, int, int, int)':
office.c:123:13: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  123 |     _Fin(0, "Protocol error");
      |             ^~~~~~~~~~~~~~~~
office.c:128:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  128 |       if( (-_Apa[na1]==_N-3) && (na2!=na1) && (nb2!=na1) ||
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:130:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  130 |          _Fin(true, "Correct");
      |                     ^~~~~~~~~
office.c:132:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  132 |          _Fin(false, "Wrong answer");
      |                      ^~~~~~~~~~~~~~
office.c:134:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  134 |       if( (-_Apa[na2]==_N-3) && (na1!=na2) && (nb1!=na2) ||
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:136:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  136 |          _Fin(true, "Correct");
      |                     ^~~~~~~~~
office.c:138:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  138 |          _Fin(false, "Wrong answer");
      |                      ^~~~~~~~~~~~~~
office.c:140:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  140 |       _Fin(false, "Wrong answer");
      |                   ^~~~~~~~~~~~~~
office.c:142:14: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  142 |   _Fin(true, "Correct");
      |              ^~~~~~~~~
office.c:120:27: warning: unused variable 'pont' [-Wunused-variable]
  120 |   int na1, nb1, na2, nb2, pont;
      |                           ^~~~
office.c: In function 'void _doInit()':
office.c:33:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   33 |     scanf("%d", &_N);
      |     ~~~~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 364 KB Output is partially correct - 23 queries, 2 points
2 Partially correct 1 ms 364 KB Output is partially correct - 13 queries, 2 points
3 Partially correct 0 ms 364 KB Output is partially correct - 159 queries, 2 points
4 Incorrect 1 ms 364 KB Hacked
5 Partially correct 0 ms 364 KB Output is partially correct - 254 queries, 2 points
6 Incorrect 0 ms 364 KB Hacked
7 Partially correct 1 ms 364 KB Output is partially correct - 353 queries, 2 points
8 Partially correct 1 ms 364 KB Output is partially correct - 403 queries, 2 points
9 Partially correct 1 ms 364 KB Output is partially correct - 453 queries, 2 points
10 Incorrect 0 ms 364 KB Hacked
11 Partially correct 1 ms 364 KB Output is partially correct - 1004 queries, 2 points
12 Incorrect 0 ms 364 KB Hacked
13 Partially correct 1 ms 364 KB Output is partially correct - 1505 queries, 2 points
14 Incorrect 1 ms 492 KB Hacked
15 Partially correct 1 ms 364 KB Output is partially correct - 2506 queries, 2 points
16 Incorrect 0 ms 364 KB Hacked
17 Partially correct 1 ms 364 KB Output is partially correct - 857 queries, 2 points
18 Partially correct 1 ms 364 KB Output is partially correct - 903 queries, 2 points
19 Incorrect 1 ms 620 KB Hacked
20 Partially correct 1 ms 748 KB Output is partially correct - 15003 queries, 2 points
21 Incorrect 1 ms 876 KB Hacked
22 Incorrect 2 ms 1004 KB Hacked
23 Incorrect 2 ms 1284 KB Hacked
24 Partially correct 2 ms 1264 KB Output is partially correct - 40947 queries, 2 points
25 Partially correct 2 ms 1392 KB Output is partially correct - 50002 queries, 2 points