Cod sursa(job #2136068)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 19 februarie 2018 16:52:50
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#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;
}