제출 #229754

#제출 시각아이디문제언어결과실행 시간메모리
229754Ruxandra985Triangles (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 poz (int st,int dr){
    int ds=0,dd=-1,aux;
    while (st!=dr){
        if (is_clockwise(1 , st , dr)){
            aux=v[st];
            v[st]=v[dr];
            v[dr]=aux;
            aux=ds;
            ds=-dd;
            dd=-aux;
        }
        st+=ds;
        dr+=dd;
    }
    return st;
}
void sorteaza (int st,int dr){
    if (st<dr){
        int pivr = ((long long)rand()*rand())%(dr-st+1)+st;
        int p = poz(st , pivr);
        p = poz(p , dr);
        sorteaza (st , p-1);
        sorteaza (p+1 , dr);
    }
}
 
int main()
{
    int n , i , elem , j;
    n = get_n();
 
    /// stergi citirea, folosesti get_n
 
    for (i = 1 ; i <= n ; i++)
        v[i] = i;
 
    sorteaza (2 , n);
 
    /*for (i = 1 ; i <= n ; i++){
        fprintf (fout,"%d\n" , v[i]);
    }*/
 
    v[n + 1] = 1;
    s[1] = v[1];
    s[2] = v[2];
    elem = 2;
    for (j = 3 ; j <= n + 1 ; j++){
        while (elem >= 2 && is_clockwise (s[elem - 1] , s[elem] , v[j]))
            elem--;
        s[++elem] = v[j];
    }
  
  	if (n >= 3)
      elem = max(elem , 4);
  
  
    give_answer(elem - 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...