Pagini recente » Cod sursa (job #2567085) | Cod sursa (job #3137694) | Cod sursa (job #3292835) | Cod sursa (job #633047) | Cod sursa (job #2136068)
#include <fstream>
using namespace std;
ifstream cin ( "trapeze.in" ) ;
ofstream cout ( "trapeze.out" ) ;
const int MAX_N = 100000 ;
int v1 [ MAX_N ] ;
int v2 [ MAX_N ] ;
int main ( )
{
int n1 , x1 , x2 ;
cin >> n1 ;
for ( int i = 0 ; i < n1 ; i ++ )
cin >> v1 [ i ] ;
int n2 ;
cin >> n2 ;
for ( int i = 0 ; i < n2 ; i ++ )
cin >> v2 [ i ] ;
int cnt1 = 0 , cnt2 = 0 , cnt = 0 ;
int SOL1 = 0 ;
int SOL2 = 0 ;
while ( cnt1 < n1 && cnt2 < n2 )
{
if ( v1 [ cnt1 ] == v2 [ cnt2 ] )
{
cnt ++ ;
cnt1 ++ ;
cnt2 ++ ;
SOL1 += cnt1 * cnt2 ;
SOL1 += ( n1 - cnt1 - 1 ) * ( n2 - cnt2 - 1 ) ;
if ( cnt == 1 )
x1 = v1 [ cnt1 - 1 ] ;
x2 = v1 [ cnt1 - 1 ] ;
}
else if ( v1 [ cnt1 ] > v2 [ cnt2 ] )
cnt2 ++ ;
else
cnt1 ++ ;
}
SOL1 -= cnt * ( cnt + 1 ) ;
SOL2 = 0 ;
if ( v1 [ 0 ] != v2 [ 0 ] )
if ( x2 != v2 [ 0 ] )
SOL2 = max ( SOL2 , 2 * x2 - v1 [ 0 ] - v2 [ 0 ] ) ;
else
{
if ( x2 != v1 [ 1 ] )
SOL2 = max ( SOL2 , 2 * x2 - v1 [ 1 ] - v2 [ 0 ] ) ;
if ( x2 != v2 [ 1 ] )
SOL2 = max ( SOL2 , 2 * x2 - v1 [ 0 ] - v2 [ 1 ] ) ;
}
cout << SOL1 << endl;
cout << SOL2 << endl;
}