From ba9d9526fda0da73ac71e1b020e19ad5b6c647fb Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Tue, 13 Aug 2024 11:25:45 +0800 Subject: [PATCH] update --- day11/P3608/1.in | 8 + day11/P3608/P3608.cpp | 75 + day11/P3608/P3608_2.in | 100001 +++++++++++++++++++++++++++++++++++++ day11/P3608/P3608_2.out | 1 + xmake.lua | 8 +- 5 files changed, 100091 insertions(+), 2 deletions(-) create mode 100644 day11/P3608/1.in create mode 100644 day11/P3608/P3608.cpp create mode 100644 day11/P3608/P3608_2.in create mode 100644 day11/P3608/P3608_2.out diff --git a/day11/P3608/1.in b/day11/P3608/1.in new file mode 100644 index 0000000..9b3ad8d --- /dev/null +++ b/day11/P3608/1.in @@ -0,0 +1,8 @@ +7 +34 +6 +23 +0 +5 +99 +2 \ No newline at end of file diff --git a/day11/P3608/P3608.cpp b/day11/P3608/P3608.cpp new file mode 100644 index 0000000..ddbe245 --- /dev/null +++ b/day11/P3608/P3608.cpp @@ -0,0 +1,75 @@ +#include +using namespace std; +#define int long long + +struct Cow{ + int dir; + int h; +}; + +const int MAX_N = 1e5+5; +Cow cow[MAX_N]; +int ans=0; + +struct Tree{ + int t[MAX_N]; + int n; + // template + // Tree(const &)=delete; + Tree(int n):n(n){} + int lowbit(int x){ + return x&(-x); + } + void update(int dir,int delta){ + while(dir<=n){ + t[dir]+=delta; + dir+=lowbit(dir); + } + } + int query1to(int dir){ + int sum=0; + while(dir>0){ + sum+=t[dir]; + dir-=lowbit(dir); + } + return sum; + } +}; + +int readint(); + +signed main(){ + const int n =readint(); + for(int i=1;i<=n;i++){ + cow[i]={ + .dir=i, + .h=readint(), + }; + } + sort(cow+1,cow+n+1,[](Cow a,Cow b)->bool{ + return a.h>b.h; + }); + Tree cmax(n); + for(int i=1;i<=n;i++){ + cmax.update(cow[i].dir, 1); + int l=cmax.query1to(cow[i].dir-1); + int r = i-l-1; + if(max(l,r)>min(l,r)*2)ans++; + } + cout<