Submission #366120

# Submission time Handle Problem Language Result Execution time Memory
366120 2021-02-13T08:35:06 Z ijxjdjd Highway design (CEOI12_highway) C++14
100 / 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);
	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);
                    return 0;
                }
            }
        }
	}
	else  {
        bool second = isOnLine(4, 5, 6);
        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);
                        return 0;
                    }
                }
            }
        }
        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;
                }
            }
        }
	}
	}
	
	return 0;
}

Compilation message

highway.cpp: In function 'int main()':
highway.cpp:29:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |         for (int i = 0; i < left.size(); i+=2) {
      |                         ~~^~~~~~~~~~~~~
highway.cpp:30:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |             if (!isOnLine(1, left[i], (i+1 < left.size() ? left[i+1] : 2))) {
      |                                        ~~~~^~~~~~~~~~~~~
highway.cpp:55:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |             for (int i = 0; i < left.size(); i+=2) {
      |                             ~~^~~~~~~~~~~~~
highway.cpp:56:48: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |                 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 Correct 1 ms 364 KB Output is correct - 22 queries, 4 points
2 Correct 1 ms 364 KB Output is correct - 12 queries, 4 points
3 Correct 1 ms 364 KB Output is correct - 158 queries, 4 points
4 Correct 1 ms 364 KB Output is correct - 202 queries, 4 points
5 Correct 1 ms 364 KB Output is correct - 253 queries, 4 points
6 Correct 1 ms 364 KB Output is correct - 303 queries, 4 points
7 Correct 1 ms 364 KB Output is correct - 352 queries, 4 points
8 Correct 0 ms 364 KB Output is correct - 402 queries, 4 points
9 Correct 0 ms 364 KB Output is correct - 452 queries, 4 points
10 Correct 1 ms 364 KB Output is correct - 502 queries, 4 points
11 Correct 0 ms 364 KB Output is correct - 1003 queries, 4 points
12 Correct 0 ms 364 KB Output is correct - 1003 queries, 4 points
13 Correct 1 ms 364 KB Output is correct - 1504 queries, 4 points
14 Correct 1 ms 492 KB Output is correct - 2004 queries, 4 points
15 Correct 1 ms 364 KB Output is correct - 2505 queries, 4 points
16 Correct 1 ms 364 KB Output is correct - 805 queries, 4 points
17 Correct 0 ms 364 KB Output is correct - 856 queries, 4 points
18 Correct 1 ms 364 KB Output is correct - 902 queries, 4 points
19 Correct 1 ms 620 KB Output is correct - 12707 queries, 4 points
20 Correct 1 ms 748 KB Output is correct - 15002 queries, 4 points
21 Correct 2 ms 876 KB Output is correct - 20062 queries, 4 points
22 Correct 1 ms 1004 KB Output is correct - 28063 queries, 4 points
23 Correct 2 ms 1264 KB Output is correct - 33890 queries, 4 points
24 Correct 2 ms 1264 KB Output is correct - 40946 queries, 4 points
25 Correct 2 ms 1392 KB Output is correct - 50001 queries, 4 points