Submission #152607

#TimeUsernameProblemLanguageResultExecution timeMemory
152607MercenaryTriangles (CEOI18_tri)C++14
20 / 100
10 ms380 KiB
#include<bits/stdc++.h> #include "trilib.h" using namespace std; //static int n; //static long long *x, *y; //static int queries=0; //static void init() { // static int is_inited=0; // if (is_inited) // return; // is_inited=1; // assert(scanf("%d", &n)==1); // x=(long long*)malloc((n+1)*sizeof(long long)); // y=(long long*)malloc((n+1)*sizeof(long long)); // for (int i=1; i<=n; i++) // assert(scanf("%lld%lld", &x[i], &y[i])==2); //} // //int get_n() { //// init(); // return n; //} // //int is_clockwise(int a, int b, int c) { // init(); // assert(a>=1 && a<=n); // assert(b>=1 && b<=n); // assert(c>=1 && c<=n); // assert(a!=b && a!=c && b!=c); // queries++; // if(queries == 1000 * 1000 + 1) // printf("Too many queries!"); // return (x[b]-x[a])*(y[c]-y[a])-(x[c]-x[a])*(y[b]-y[a])<0; //} // //void give_answer(int s) { //// init(); // printf("%d\n", s); //} const int maxn = 4e4 + 5; int n , id[maxn]; int a[maxn]; int main(){ srand(time(0)); // init(); n = get_n(); int u = rand() % n + 1; for(int i = 1 ; i <= n ; ++i){ id[i] = i; } swap(id[u] , id[1]); sort(id + 2 , id + n + 1 , [&](const int & x , const int &y){ return !is_clockwise(u , x , y); }); int m = 0; for(int i = 1 ; i <= n ; ++i){ while(m >= 2 && is_clockwise(a[m - 1] , a[m] , id[i]))--m; a[++m] = id[i]; } // give_answer(m); int pre = m; u = a[rand() % m + 1]; for(int i = 1 ; i <= n ; ++i){ id[i] = i; } swap(id[u] , id[1]); sort(id + 2 , id + n + 1 , [&](const int & x , const int &y){ return !is_clockwise(u , x , y); }); m = 0; for(int i = 1 ; i <= n ; ++i){ while(m >= 2 && is_clockwise(a[m - 1] , a[m] , id[i]))--m; a[++m] = id[i]; } while(m != pre){ pre = m; u = a[rand() % m + 1]; for(int i = 1 ; i <= n ; ++i){ id[i] = i; } swap(id[u] , id[1]); sort(id + 2 , id + n + 1 , [&](const int & x , const int &y){ return !is_clockwise(u , x , y); }); m = 0; for(int i = 1 ; i <= n ; ++i){ while(m >= 2 && is_clockwise(a[m - 1] , a[m] , id[i]))--m; a[++m] = id[i]; } } give_answer(m); }
#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...