mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-21 22:51:45 +00:00
Compare commits
No commits in common. "9db115d255bf3cc1fc85f5ddef0e263d20de7b15" and "c5c309b935e33ecdfecffec50a93b72b0cbcd6e5" have entirely different histories.
9db115d255
...
c5c309b935
@ -1,67 +0,0 @@
|
|||||||
#include <algorithm>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <map>
|
|
||||||
#include <vector>
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
ll n,ans=0;
|
|
||||||
std::vector<ll> a,raw;
|
|
||||||
std::map<ll, ll> m;
|
|
||||||
std::vector<ll> t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static inline constexpr ll lb(ll n){
|
|
||||||
return n&(-n);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void upd(ll idx, ll add){
|
|
||||||
while(idx<=n){
|
|
||||||
t[idx]+=add;
|
|
||||||
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;
|
|
||||||
raw.resize(n+1);
|
|
||||||
t.resize(n+1);
|
|
||||||
for(ll i=1;i<=n;++i){
|
|
||||||
std::cin>>raw[i];
|
|
||||||
}
|
|
||||||
a=raw;
|
|
||||||
std::sort(a.begin()+1,a.end());
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
m[a[i]]=i;
|
|
||||||
}
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
raw[i]=m[raw[i]];
|
|
||||||
// printf("raw[%lld]=%lld\n",i,raw[i]);
|
|
||||||
}
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
ll g=n-raw[i];
|
|
||||||
ll l=i-1-get(raw[i]);
|
|
||||||
ll r = g-l;
|
|
||||||
// printf("i=%lld, l=%lld, r=%lld\n",i,l,r);
|
|
||||||
if(std::max(l,r)>std::min(l,r)*2){
|
|
||||||
ans++;
|
|
||||||
}
|
|
||||||
upd(raw[i],1);
|
|
||||||
}
|
|
||||||
std::cout<<ans<<"\n";
|
|
||||||
}
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
ll n,ans=0;
|
|
||||||
std::vector<ll> 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<<ans<<"\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
21
src/test.cpp
21
src/test.cpp
@ -1,19 +1,8 @@
|
|||||||
#include <cmath>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <set>
|
using namespace std;
|
||||||
#include <stdexcept>
|
|
||||||
#include <string>
|
|
||||||
int main(){
|
int main(){
|
||||||
int n;
|
int a = 1;
|
||||||
std::cin>>n;
|
a<<=32;
|
||||||
std::set<int> s;
|
cout<<a<<"\n";
|
||||||
std::cout<<n<<"\n";
|
|
||||||
for(int i=1;i<=n;i++){
|
|
||||||
int tmp;
|
|
||||||
std::cin>>tmp;
|
|
||||||
if(s.find(tmp)==s.end()){
|
|
||||||
throw std::runtime_error(std::to_string(tmp));
|
|
||||||
}
|
|
||||||
s.insert(tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user