Submission #236399

#TimeUsernameProblemLanguageResultExecution timeMemory
236399super_j6Triangles (CEOI18_tri)C++14
100 / 100
31 ms2176 KiB
#include "trilib.h"
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;
#define endl '\n'
#define ll long long
#define pi pair<int, int>
#define f first
#define s second

int n;
vector<int> a[2];
deque<int> v;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	n = get_n();
	
	a[0] = {1, 2};
	for(int i = 3; i <= n; i++){
		a[is_clockwise(1, 2, i)].push_back(i);
	}
	
	n = 0;
	for(int t = 0; t < 2; t++){
		sort(a[t].begin() + !t, a[t].end(), [&](int x, int y){
			return is_clockwise(1, x, y);	
		});
		
		for(int i : a[t]){
			while(n > 1 && !is_clockwise(v[n - 2], v[n - 1], i)) v.pop_back(), n--;
			v.push_back(i), n++;
		}
	}
	
	hell:
		if(n > 2 && !is_clockwise(v[n - 2], v[n - 1], v[0])){
			v.pop_back(), n--;
			goto hell;
		} 
		if(n > 2 && is_clockwise(v[1], v[0], v[n - 1])){
			v.pop_front(), n--;
			goto hell;
		} 
		
		
	
	give_answer(n);

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...