# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
746539 | vjudge1 | Triangles (CEOI18_tri) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "trilib.h"
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n=get_n();
int z=0;
if(is_clockwise(1,2,3)){
unnow.push_back(1);
unnow.push_back(2);
unnow.push_back(3);
}
else{
unnow.push_back(1);
unnow.push_back(3);
unnow.push_back(2);
}
for(int ind=4;ind<=n;ind++){
int sz=unnow.size();
vector<int>ted(sz+1);
int f=0;
int ff=unnow[1];
if(is_clockwise(unnow.back(),unnow[0],ind)!=is_clockwise(unnow.back(),unnow[0],ff)){
ted[sz-1]++;
ted[0]++;
f=1;
}
for(int i=0;i<sz-1;i++){
ff=unnow[0];
if(i==0){
ff=unnow[2];
}
if(is_clockwise(unnow[i],unnow[i+1],ind)!=is_clockwise(unnow[i],unnow[i+1],ff)){
ted[i]++;
ted[i+1]++;
f=1;
}
}
if(f==0){
continue;
}
vector<int>fake;
int z=0;
for(int i=0;i<sz;i++){
if(ted[i]==2){
continue;
}
if(ted[i]==0){
fake.push_back(unnow[i]);
continue;
}
fake.push_back(unnow[i]);
if(i==sz-1||ted[i+1]!=0){
fake.push_back(ind);
}
}
swap(fake,unnow);
fake.clear();
}
give_answer(sz);
}