diff --git a/src/9/P3608.cpp b/src/9/1/P3608.cpp similarity index 99% rename from src/9/P3608.cpp rename to src/9/1/P3608.cpp index 76520b3..5e1e176 100644 --- a/src/9/P3608.cpp +++ b/src/9/1/P3608.cpp @@ -12,6 +12,8 @@ std::vector a,raw; std::map m; std::vector t; + + static inline constexpr ll lb(ll n){ return n&(-n); } diff --git a/src/9/1/P6278.cpp b/src/9/1/P6278.cpp new file mode 100644 index 0000000..1e25d04 --- /dev/null +++ b/src/9/1/P6278.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +using ll = int64_t; + +ll n,ans=0; +std::vector a,t,s; + +static inline ll lb(ll val){ + return n&-n; +} + +static inline void upd(ll idx,ll add){ + while (idx<=n) { + t[idx]+=n; + idx+=lb(idx); + } +} + +static inline ll get(ll idx){ + ll res=0; + while(idx){ + res+=t[idx]; + idx-=lb(idx); + } + return res; +} + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>n; + a.resize(n+2); + s.resize(n+2); + t.resize(n+2); + for(ll i=1;i<=n;++i){ + std::cin>>a[i]; + ++a[i]; + } + for(ll i=1;i<=n;++i){ + s[i]=get(a[i]); + upd(a[i],1); + } + std::cout<<"0\n"; + for(ll i=1;i<=n;i++){ + ans+=s[i]; + std::cout< #include -using namespace std; - +#include +#include +#include int main(){ - int a = 1; - a<<=32; - cout<>n; + std::set s; + std::cout<>tmp; + if(s.find(tmp)==s.end()){ + throw std::runtime_error(std::to_string(tmp)); + } + s.insert(tmp); + } } \ No newline at end of file