Cod sursa(job #1338445)

Utilizator xtreme77Patrick Sava xtreme77 Data 10 februarie 2015 01:26:38
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
/*
 * Code by Spiromanul
 */

# include "fstream"
# include "cstring"
# include "vector"
# include "queue"
# include "bitset"
# include "algorithm"
# include "deque"

const char IN [ ] = "carnati.in" ;
const char OUT [ ] = "carnati.out" ;
const int MAX = 2555 ;

# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )

using namespace std;

ifstream cin ( IN ) ;
ofstream cout ( OUT ) ;

pair < int , int > E [ MAX ] ;

/// costul maxim daca servesc clientul i

int main ( void )
{
    int n , cost ;
    cin >> n >> cost ;
    FORN ( i , 1 , n )
        cin >> E [ i ].first >> E [ i ].second ;
    sort ( E + 1 , E + n + 1 ) ;
    int CET = - 1 << 30 ;
    FORN ( i , 1 , n )
    {
        int price = E [ i ].second ;
        int last = - 1 << 30 ;
        int cate = 0 ;
        FORN ( j , 1 , n )
        {
            if ( E [ j ].second < price ) continue ;
            last = max ( last , E [ j ].first * cost - price * cate ) ;
            CET = max ( CET , price * cate - E [ j ].first * cost + last + price - cost ) ;
            ++ cate ;
        }
    }
    cout << CET << '\n' ;
    return 0;
}