http://codeforces.com/contest/1029/problem/C
c.begin() 返回一个迭代器,它指向容器c的第一个元素
c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置
c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置
multiset和set不同之处在于multiset可以有重复的元素。
#include<bits/stdc++.h>
#define maxn 300005
using namespace std;
multiset<int>a,b;
int L[maxn],R[maxn];
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>L[i]>>R[i];a.insert(L[i]);b.insert(R[i]);}/// cout<<-1<<endl;int ans=0;for(int i=0;i<n;i++){a.erase(a.find(L[i]));b.erase(b.find(R[i]));ans=max(ans,*(b.begin())-*(a.rbegin()));a.insert(L[i]);b.insert(R[i]);}cout<<ans<<endl;return 0;
}