728x90
반응형
7578번: 공장
어떤 공장에는 2N개의 기계가 2열에 걸쳐 N개씩 배치되어 있다. 이 2개의 열을 각각 A열과 B 열이라고 부른다. A열에 있는 N개의 기계는 각각이 B열에 있는 N개의 기계와 하나씩 짝을 이루어 케이블
www.acmicpc.net
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
Main m = new Main();
m.doit();
}
int N;
int seq[] = new int[500007];
int val[] = new int[1000007];
int bit[] = new int[1048577];
int bin;
public void doit() throws IOException{
// System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
StringTokenizer st;
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1; i <= N; i++){
seq[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1; i <= N; i++){
int v = Integer.parseInt(st.nextToken());
val[v] = i;
}
for(int i = 1; i <= N; i++){
seq[i] = val[seq[i]];
}
for(bin=1;bin<N;bin*=2);
// System.out.println(bin);
long res = 0;
for(int i = 1; i <= N; i++){
res += sum(seq[i]+1, N);
put(seq[i]);
}
// printSeq();
// printArr();
System.out.println(res);
// for(int i = 1; i <= N; i++){
// System.out.println(seq[i]);
// }
br.close();
}
void printSeq(){
System.out.print("[");
for(int i = 0; i <= N; i++){
System.out.print(seq[i] + ", ");
}
System.out.println("]");
}
void printArr(){
System.out.print("[");
for(int i = 0; i <= 50; i++){
System.out.print(bit[i] + ", ");
}
System.out.println("]");
}
void put(int key){
int ind = bin + key - 1;
while(ind != 0){
bit[ind]++;
ind /= 2;
}
}
int sum(int left, int right)
{
int lind = bin+left-1;
int rind = bin+right-1;
int rval=0;
while(lind <= rind)
{
if(lind%2 == 1) rval += bit[lind];
if(rind%2 == 0) rval += bit[rind];
lind = (lind+1)/2;
rind = (rind-1)/2;
}return rval;
}
}
728x90
반응형
'IT 정보 > 알고리즘(백준, BOJ)' 카테고리의 다른 글
[백준-BOJ] 9012 (0) | 2021.05.10 |
---|---|
[백준-BOJ] 8895 (0) | 2021.04.07 |
[백준-BOJ] 6378 (0) | 2021.04.07 |
[백준-BOJ] 6359 (0) | 2021.04.07 |
[백준-BOJ] 5585 (0) | 2021.04.07 |