diff --git a/src/9/1/P6278.cpp b/src/9/1/P6278.cpp index 1e25d04..4ac1569 100644 --- a/src/9/1/P6278.cpp +++ b/src/9/1/P6278.cpp @@ -9,12 +9,12 @@ ll n,ans=0; std::vector a,t,s; static inline ll lb(ll val){ - return n&-n; + return val&(-val); } static inline void upd(ll idx,ll add){ while (idx<=n) { - t[idx]+=n; + t[idx]+=add; idx+=lb(idx); } } @@ -29,7 +29,7 @@ static inline ll get(ll idx){ } int main(){ - std::iostream::sync_with_stdio(false); + std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cin>>n; @@ -40,13 +40,16 @@ int main(){ std::cin>>a[i]; ++a[i]; } + for(ll i=1;i<=n;++i){ - s[i]=get(a[i]); - upd(a[i],1); + ll x = n - a[i] + 2; + s[a[i]] += get(x-1); + upd(x, 1); } + std::cout<<"0\n"; - for(ll i=1;i<=n;i++){ - ans+=s[i]; + for(ll i=2;i<=n;i++){ + ans += s[i-1]; std::cout<