Submission #121189

#TimeUsernameProblemLanguageResultExecution timeMemory
121189bekzhan29Triangles (CEOI18_tri)C++14
100 / 100
43 ms2556 KiB
#include <bits/stdc++.h> #include <iostream> #include <algorithm> #include <vector> #include <map> #include <unordered_map> #include <set> #include <queue> #include "trilib.h" using namespace std; #define pb push_back #define mp make_pair #define INF 3e9 #define mod 998244353 #define eps 1e-6 #define abs(x) ((x)>=0?(x):-(x)) #define y1 solai #define fi first #define se second typedef long long ll; void read(ll &x) { scanf("%lld",&x); } void read(ll &x, ll &y) { scanf("%lld%lld",&x,&y); } void read(ll &x, ll &y, ll &z) { scanf("%lld%lld%lld",&x,&y,&z); } void print(ll x) { printf("%lld ",x); } void println(ll x) { printf("%lld\n",x); } const ll N=300100; ll n,a[N],b[N],sz,mid,cnt,res,mx=1000000,l,r; bool cmp(ll x, ll y) { return b[x]<b[y]; } bool cmp1(ll x, ll y) { cnt++; assert(cnt<=mx); return is_clockwise(1,x,y); } int main() { n=get_n(); for(ll i=1;i<=n;i++) a[i]=i; for(ll i=3;i<=n;i++) { cnt++; assert(cnt<=mx); if(is_clockwise(1,2,i)) b[i]=1; else b[i]=-1; } b[2]=0; sort(a+2,a+n+1,&cmp); for(ll i=3;i<=n;i++) { if(b[a[i]]<b[a[i-1]]) { for(ll i=1;i>=0;i++); } } for(ll i=2;i<=n;i++) if(b[a[i]]==0) mid=i; sort(a+2,a+mid,&cmp1); sort(a+mid+1,a+n+1,&cmp1); sz=2; b[1]=1; b[2]=a[2]; for(ll i=3;i<=n;i++) { while(sz>=2&&!is_clockwise(b[sz-1],b[sz],a[i])) sz--; b[++sz]=a[i]; } l=1; r=sz; for(ll ch=1;ch&&r-l+1>=3;) { ch=0; if(!is_clockwise(b[r],b[l],b[l+1])) l++,ch=1; else if(is_clockwise(b[l],b[r],b[r-1])) r--,ch=1; } give_answer(r-l+1); }

Compilation message (stderr)

tri.cpp: In function 'void read(ll&)':
tri.cpp:23:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&x);
  ~~~~~^~~~~~~~~~~
tri.cpp: In function 'void read(ll&, ll&)':
tri.cpp:27:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld",&x,&y);
  ~~~~~^~~~~~~~~~~~~~~~~~
tri.cpp: In function 'void read(ll&, ll&, ll&)':
tri.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld%lld",&x,&y,&z);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...