Submission #171986

# Submission time Handle Problem Language Result Execution time Memory
171986 2019-12-30T18:13:07 Z kostia244 Highway design (CEOI12_highway) C++17
4 / 100
16 ms 11108 KB
#include"office.h"
#include<bits/stdc++.h>
#define pb push_back
#define all(x) x.begin(), x.end()
using namespace std;
using ll = long long;
using vi = vector<ll>;
using pi = pair<ll, ll>;
using vpi = vector<pi>;
#define iol isOnLine
int n;
vpi bad;
void check(vpi a) {
	// cout << "++\n";
	if(bad.empty()) {
		if(a[0].second<2||a[1].second<2||a[2].second<2) {
		for(auto i : a) bad.pb(i);
		return;
		}
		for(int i = 1; i < 3; i++) {
			if(iol(a[0].first, a[0].first+1, a[i].first)) {
				Answer(a[0].first, a[0].first+1,a[3^i].first, a[3^i].first+1);
				exit(0);
			}
		}
		Answer(a[1].first, a[1].first+1,a[2].first, a[2].first+1);
		exit(0);
	}
	for(int i = 0; i < 3; i++) {
		for(int j = i+1; j < 3; j++) {
			vpi z[2];
			for(int k = 0; k <3; k++)
				z[iol(a[i].first, a[j].first, bad[k].first)].pb(bad[k]);
			if(z[0].size()&&z[1].size()) {
				Answer(a[i].first, a[j].first, a[3^i^j].first, z[0][0].first);
			}
		}
	}

}
void solve(vpi a) {
	// cout << a.size() << "\n";
	if(a.size()==2) {
		Answer(a[0].first, a[0].first+1,a[1].first, a[1].first+1);
		exit(0);
	}
	assert(a.size()>2);
	vpi t;
	int x = 0;
	while(x+2 < a.size()) {
		if(iol(a[x].first, a[x+1].first, a[x+2].first)) {
			t.pb({a[x].first, a[x].second+a[x+1].second+a[x+2].second});
		} else {
			check({a[x], a[x+1], a[x+2]});
		}
		x+=3;
	}
	solve(t);
}
int main() {
	n = GetN();
	vpi a;
	for(int i = 1; i <= n; i++) a.pb({i, 1});
	solve(a);
}

Compilation message

highway.cpp: In function 'void solve(vpi)':
highway.cpp:50:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(x+2 < a.size()) {
        ~~~~^~~~~~~~~~
office.c: In function 'int isOnLine(int, int, int)':
office.c:85:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:88:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:92:37: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(false, "Too many questions");
                                     ^
office.c:83:7: warning: unused variable 'i' [-Wunused-variable]
   int i;
       ^
office.c: In function 'void Answer(int, int, int, int)':
office.c:123:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:128:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
       if( (-_Apa[na1]==_N-3) && (na2!=na1) && (nb2!=na1) ||
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:130:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(true, "Correct");
                              ^
office.c:132:36: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(false, "Wrong answer");
                                    ^
office.c:134:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
       if( (-_Apa[na2]==_N-3) && (na1!=na2) && (nb1!=na2) ||
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:136:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(true, "Correct");
                              ^
office.c:138:36: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(false, "Wrong answer");
                                    ^
office.c:140:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
       _Fin(false, "Wrong answer");
                                 ^
office.c:142:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
   _Fin(true, "Correct");
                       ^
office.c:120:27: warning: unused variable 'pont' [-Wunused-variable]
   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]
     scanf("%d", &_N);
     ~~~~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 2 ms 632 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Correct 2 ms 256 KB Output is correct - 8 queries, 4 points
3 Runtime error 2 ms 632 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 2 ms 504 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Incorrect 2 ms 376 KB Output isn't correct - Wrong answer
6 Incorrect 2 ms 376 KB Output isn't correct - Wrong answer
7 Incorrect 2 ms 376 KB Output isn't correct - Wrong answer
8 Runtime error 2 ms 504 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 3 ms 632 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 2 ms 632 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Incorrect 2 ms 504 KB Output isn't correct - Wrong answer
12 Incorrect 2 ms 504 KB Output isn't correct - Wrong answer
13 Runtime error 3 ms 760 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 3 ms 1016 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Incorrect 2 ms 632 KB Output isn't correct - Wrong answer
16 Incorrect 2 ms 380 KB Output isn't correct - Wrong answer
17 Incorrect 2 ms 504 KB Output isn't correct - Wrong answer
18 Incorrect 2 ms 376 KB Output isn't correct - Wrong answer
19 Runtime error 6 ms 3312 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 7 ms 3668 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Incorrect 5 ms 2412 KB Output isn't correct - Wrong answer
22 Incorrect 6 ms 3304 KB Output isn't correct - Wrong answer
23 Runtime error 12 ms 7652 KB Execution killed with signal 11 (could be triggered by violating memory limits)
24 Runtime error 14 ms 9064 KB Execution killed with signal 11 (could be triggered by violating memory limits)
25 Runtime error 16 ms 11108 KB Execution killed with signal 11 (could be triggered by violating memory limits)