diff --git a/src/10/22/P11670.cpp b/src/10/22/P11670.cpp index 4a18b2b..c04f529 100644 --- a/src/10/22/P11670.cpp +++ b/src/10/22/P11670.cpp @@ -1,11 +1,47 @@ +#include #include +#include #include #include +#include using ll = int64_t; - +ll n,ans; +std::vector> anumcnt; +std::vector a; int main(){ std::iostream::sync_with_stdio(false); std::cin.tie(nullptr); + + std::cin>>n; + + a.resize(n+1); + anumcnt.resize(n+1); + + for(ll i=1;i<=n;i++){ + std::cin>>a[i]; + anumcnt[a[i]].push_back(i); + } + for(ll i=1;i<=n;i++){ + ll b,nans=0; + std::cin>>b; + if(a[i]==b){ + ll N=i-1; + nans+=N*(N+1)/2; + N=n-i; + nans+=N*(N+1)/2; + // printf("a[%lld]==b[%lld], +=%lld\n",i,i,nans); + } + ans+=nans; + nans=0; + for(ll ai:anumcnt[b]){ + ll l=std::min(ai,i); + ll r=std::min(n-ai+1,n-i+1); + nans += std::min(l,r); + } + // printf("b[%lld] l to r +=%lld\n",i,nans); + ans+=nans; + } + std::cout<