이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
import java.util.ArrayList;
import java.util.*;
public class shoes {
public long count_swaps(int[] s) {
int n=s.length;
PriorityQueue<Integer>pos[]=new PriorityQueue[n];
PriorityQueue<Integer>neg[]=new PriorityQueue[n];
for(int i=0;i<n;i++){
pos[i]=new PriorityQueue<>();
neg[i]=new PriorityQueue<>();
update(i,1,220000);
}
for(int i=0;i<n;i++){
if(s[i]>0){
pos[s[i]].add(i);
}
else{
neg[-1*s[i]].add(i);
}
}
// for(int i=0;i<n;i++){
// Collections.sort(pos[i]);
// }
long ans=0;
boolean[]visited=new boolean[n];
for(int i=0;i<n;i++){
if(!visited[i]){
if(s[i]>0){
visited[i]=true;
pos[s[i]].poll();
int idx=neg[s[i]].poll();
visited[idx]=true;
long add=query(idx)-query(i);
ans+=add==0?0:add;
update(idx,-1,220000);
}
else{
visited[i]=true;
neg[-1*s[i]].poll();
int idx=pos[-1*s[i]].poll();
visited[idx]=true;
long add=query(idx)-query(i);
ans+=add==0?0:add-1;
update(idx,-1,220000);
}
}
}
return ans;
}
long[]BIT=new long[250000];
void update(int x, long val,int n)
{
x+=5;
for(; x <= n; x += x&-x)
BIT[x] += val;
}
long query(int x)
{
int cop=x+5;
long sum = 0;
for(; cop > 0; cop -= cop&-cop){
if(cop==150000)
x=x;
sum += BIT[cop];
}
return sum;
}
}
컴파일 시 표준 에러 (stderr) 메시지
Note: shoes.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
# | 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... |