Submission #162850

#TimeUsernameProblemLanguageResultExecution timeMemory
162850fluffypotatoArranging Shoes (IOI19_shoes)Java
100 / 100
681 ms82552 KiB
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; } }

Compilation message (stderr)

Note: shoes.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...