Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
138821 梁乃元 火柴排队 C++ 通过 100 62 MS 2604 KB 1194 2024-03-19 13:41:33

Tests(10/10):


# 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 << endl ; return 0 ; }


测评信息: