이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
int n;
int val[1000007];
int seq[500007];
int bit[1048577], bin;
void put(int key)
{
int ind = bin+key-1;
while(ind)
{
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;
}
int main(void)
{
int i, v;
long long res=0;
scanf("%d", &n);
for(bin=1;bin<n;bin*=2);
for(i = 1; i <= n; i++)
scanf("%d", &seq[i]);
for(i = 1; i <= n; i++)
{
scanf("%d", &v);
val[v]= i;
}
for(i = 1; i <= n; i++)
seq[i] = val[seq[i]];
for(i = 1; i <= n; i++)
{
res += sum(seq[i]+1, n);
put(seq[i]);
}printf("%lld\n", res);
return 0;
}
| # | 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... |