Submission #229803

#TimeUsernameProblemLanguageResultExecution timeMemory
229803Ruxandra985Triangles (CEOI18_tri)C++14
0 / 100
5 ms512 KiB
#include <bits/stdc++.h> #include "trilib.h" using namespace std; int v[40010] , x[40010] , y[40010] , s[40010]; int cmp (int x , int y){ return !is_clockwise(1 , x , y); } int main() { int n , i , elem , j , bgn; n = get_n(); /// stergi citirea, folosesti get_n for (i = 2 ; i < n ; i++){ if (is_clockwise(n , i , 1)) y[++y[0]] = i; else x[++x[0]] = i; } sort (x + 1 , x + x[0] + 1 , cmp); sort (y + 1 , y + y[0] + 1 , cmp); for (i = 1 ; i <= y[0] ; i++) v[i] = y[i]; v[y[0] + 1] = 1; for (i = 1 ; i <= x[0] ; i++) v[y[0] + 1 + i] = x[i]; v[x[0] + y[0] + 2] = n; s[1] = v[1]; s[2] = v[2]; bgn = 1; elem = 2; for (j = 2 ; j <= n ; j++){ while (elem - bgn + 1 >= 2 && is_clockwise (s[elem - 1] , s[elem] , v[j])){ elem--; } s[++elem] = v[j]; } while (elem - bgn + 1 >= 3){ if (is_clockwise (s[elem] , s[bgn] , s[bgn + 1])){ bgn++; } else if (is_clockwise (s[elem - 1] , s[elem] , s[bgn])) elem--; else break; } give_answer(max(3 , elem - bgn + 1) ); 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...