Submission #267126

#TimeUsernameProblemLanguageResultExecution timeMemory
267126biggTriangles (CEOI18_tri)C++14
100 / 100
37 ms2304 KiB
#include<bits/stdc++.h> #include<trilib.h> using namespace std; int getn(){ int n; //scanf("%d", &n); n = get_n(); return n; } bool isclokwise(int x, int y, int z){ int ok; //printf("%d %d %d\n",x, y, z ), scanf("%d", &ok);; ok = is_clockwise(x, y, z); return ok; } void giveans(int x){ //printf("%d\n",x ); give_answer(x); } bool comp(int x, int y){ return isclokwise(1, x, y); } vector<int> qualmetade[5], hull[5]; int n; int main(){ n = getn(); qualmetade[0].push_back(2); qualmetade[1].push_back(2); for(int i = 3; i <= n; i++){ if(isclokwise(1, 2, i)) qualmetade[1].push_back(i); else qualmetade[0].push_back(i); } for(int metade = 0; metade <= 1; metade++){ sort(qualmetade[metade].begin(), qualmetade[metade].end(), comp); for(int i = 0; i < qualmetade[metade].size(); i++){ int esse= qualmetade[metade][i]; int tam = hull[metade].size(); while(tam >= 2 && !isclokwise(hull[metade][tam - 2], hull[metade][tam - 1], esse)){ tam--; hull[metade].pop_back(); } hull[metade].push_back(esse); } if(metade)reverse(hull[1].begin(), hull[1].end()); hull[metade].insert(hull[metade].begin(), 1); //hull[1].insert(hull[1].begin(), 1); } //printf("%d %d\n", hull[0].size(), hull[1].size() ); if(min(hull[0].size(), hull[1].size()) == 2){ giveans(max(hull[0].size(), hull[1].size())); //printf("oi\n"); return 0; } for(int metade = 0; metade <= 1; metade++){ hull[0].pop_back(); while(true){ bool quebra = true; int tam = hull[0].size(); if(tam >= 2 && !isclokwise(hull[0][tam-2], hull[0][tam - 1], hull[1][hull[1].size() - 1])){ hull[0].pop_back(); quebra = false; } tam = hull[1].size(); if(tam >= 2 && !isclokwise(hull[0][hull[0].size() - 1], hull[1][tam-1], hull[1][tam - 2])){ hull[1].pop_back(); quebra = false; } if(quebra) break; } for(int i = 0; i <= 1; i++) reverse(hull[i].begin(), hull[i].end()); swap(hull[0], hull[1]); } giveans(hull[0].size() + hull[1].size()); }

Compilation message (stderr)

tri.cpp: In function 'int main()':
tri.cpp:40:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |   for(int i = 0; i < qualmetade[metade].size(); i++){
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...