// Problem#: 13858 // Submission#: 3622037 // The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License // URI: http://creativecommons.org/licenses/by-nc-sa/3.0/ // All Copyright reserved by Informatic Lab of Sun Yat-sen University #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <algorithm> #include <cmath> using namespace std; struct node { int flag; int x; }A[40005]; int counter=0; bool cmp(node a, node b) { if (a.x==b.x) return a.flag<b.flag; return a.x<b.x; } int main() { int n,x,y,z; scanf("%d%d%d%d",&n,&x,&y,&z); int i; for (i=0;i<n;i++) { int a,b; scanf("%d%d",&a,&b); A[counter].flag=0; A[counter].x=a; counter++; A[counter].flag=1; A[counter].x=b; counter++; } sort(A,A+counter,cmp); int now=0; int hot=0; int maxn=0; for (i=0;i<counter;i++) { if (!A[i].flag) { now++; int total=now*y+hot*z+(n-now-hot)*x; if (total>maxn) maxn=total; } else { now--; hot++; } } printf("%d\n",maxn); }