| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 96675 | shoemakerjo | Highway design (CEOI12_highway) | C++14 | 8 ms | 1400 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "office.h"
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	vector<int> c1, c2, poss; //start all empty
	vector<int> c2poss; //extra stuff
	int tp = 0;
	n = GetN();
	if (isOnLine(1, 2, 3)) {
		tp = 0;
		c1.push_back(1);
		c1.push_back(2);
		c1.push_back(3);
		for (int i = 4; i <= n; i++) {
			poss.push_back(i);
		}
	}
	else if (isOnLine(1, 3, 4)) {
		tp = 1;
		c1.push_back(1);
		c1.push_back(3);
		c1.push_back(4);
		c2.push_back(2);
		for (int i = 5; i <= n; i++) {
			poss.push_back(i);
		}
	}
	else if (isOnLine(1, 2, 4)) {
		tp = 2;
		c1.push_back(1);
		c1.push_back(2);
		c1.push_back(4);
		c2.push_back(3);
		for (int i = 5; i <= n; i++) {
			poss.push_back(i);
		}
	}
	else if (isOnLine(2, 3, 4)) {
		tp = 3;
		c1.push_back(2);
		c1.push_back(3);
		c1.push_back(4);
		c2.push_back(1);
		for (int i = 5; i <= n; i++) {
			poss.push_back(i);
		}
	}
	else {
		//just bash
		if (isOnLine(1, 2, 5)) {
			Answer(1, 2, 3, 4);
			return 0;
		}
		if (isOnLine(1, 3, 5)) {
			Answer(1, 3, 2, 4);
			return 0;
		}
		if (isOnLine(1, 4, 5)) {
			Answer(1, 4, 2, 3);
			return 0;
		}
		if (isOnLine(2, 3, 5)) {
			Answer(2, 3, 1, 4);
			return 0;
		}
		if (isOnLine(2, 4, 5)) {
			Answer(2, 4, 1, 3);
			return 0;
		}
		if (isOnLine(3, 4, 5)) {
			Answer(3, 4, 1, 2);
			return 0;
		}
		return 0; //assert flase should also work here
	}
	while (poss.size()) {
		if (c2.size() >= 2) {
			//we can go ahead and answer
			Answer(c1[0], c1[1], c2[0], c2[1]);
			return 0;
		}
		if (poss.size() == 1) {
			//always must be in the answer
			Answer(c1[0], c1[1], c2[0], poss.back());
			return 0;
		}
			
		int a = poss.back(); poss.pop_back();
		int b = poss.back(); poss.pop_back();
		if (tp != 0 && poss.size() <= 1) {
			//at least one is in the answer
			if (isOnLine(c1[0], c1[1], a)) {
				c2.push_back(a);
			}
			else {
				c2.push_back(b);
			}
			continue;
		}
		if (isOnLine(c1[0], a, b)) {
			continue;
		}
		if (isOnLine(c1[0], c1[1], a)) {
			c2.push_back(b);
		}
		else {
			c2.push_back(a);
			c2poss.push_back(b);
		}
	}
	for (int v : c2poss) c2.push_back(v);
	Answer(c1[0], c1[1], c2[0], c2[1]);
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
