Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
138856 | 陈家宝 | 火柴排队 | C++ | 通过 | 100 | 71 MS | 2600 KB | 1087 | 2024-03-19 16:32:57 |
#include<bits/stdc++.h> using namespace std ; struct mch{ int h , id ; } A [114514] , B [114514] ; int a [100005] , tmp [100005] , ans , n ; bool cmp ( mch a , mch b ){ return a . h < b . h ; } void mrg ( int l , int r ){ if ( l >= r )return; int mid = l + r ; mid /= 2 ; mrg ( l , mid ) ; mrg ( mid + 1 , r ) ; int i = l , j = mid + 1 , k = l ; while ( i <= mid && j <= r ){ if ( a [i] > a [j] ){ tmp [k ++] = a [j ++] ; ans = ans + mid - i + 1 ; ans %= 99999997 ; } else tmp [k ++] = a [i ++] ; } while ( i <= mid )tmp [k ++] = a [i ++] ; while ( j <= r )tmp [k ++] = a [j ++] ; for ( i = l ; i <= r ; i ++ )a [i] = tmp [i] ; return; } int main ( ) { int n ; cin >> n ; for ( int i = 1 ; i <= n ; i ++ ){ cin >> A [i] . h ; A [i] . id = i ; } for ( int i = 1 ; i <= n ; i ++ ){ cin >> B [i] . h ; B [i] . id = i ; } sort ( A + 1 , A + n + 1 , cmp ) ; sort ( B + 1 , B + n + 1 , cmp ) ; for ( int i = 1 ; i <= n ; i ++ )a [A [i] . id] = B [i] . id ; mrg ( 1 , n ) ; cout << ans; return 0; }