이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,e,f[200009],fen[200009],pas;
long long read(long long q){
long long jm=0;
while(q>=1){
jm+=fen[q];
q=q-(q&(-q));
}
return jm;
}
void upd(long long q, long long w){
while(q<=a){
fen[q]+=w;
q=q+(q&(-q));
}
}
bool bo[200009];
map <long long, deque <long long> > dez;
long long count_swaps(vector <int> S){
a=S.size();
for(b=1; b<=a; b++) f[b]=S[b-1];
for(b=1; b<=a; b++){
dez[f[b]].push_back(b);
}
for(b=1; b<=a; b++) upd(b,1);
for(b=1; b<=a; b++){
if(f[b]<0){
if(dez[f[b]][0]!=b) continue;
dez[f[b]].pop_front();
pas+=read(dez[-f[b]][0])-2;
upd(b,-1);
upd(dez[-f[b]][0],-1);
dez[-f[b]].pop_front();
}else{
if(dez[f[b]][0]!=b) continue;
dez[f[b]].pop_front();
pas+=read(dez[-f[b]][0])-1;
upd(b,-1);
upd(dez[-f[b]][0],-1);
dez[-f[b]].pop_front();
}
}
return pas;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |