我觉得题名应该改为:关于<set>库的正确使用语法练习。
1 /* 2 ID:WULALA 3 PROB:bzoj1208 4 LANG:C++ 5 */ 6 #include <set> 7 #include <cstdio> 8 #include <cstring> 9 #include <algorithm> 10 #include <cmath> 11 #include <iostream> 12 #include <fstream> 13 #include <ctime> 14 #define N 15 #define M 16 #define mod 1000000 17 #define mid(l,r) ((l+r) >> 1) 18 #define INF 0x7fffffff 19 using namespace std; 20 21 set<int> bst; 22 int n,ans; 23 bool flag; 24 25 int main() 26 { 27 bst.insert(-INF); 28 bst.insert(INF); 29 scanf("%d",&n); 30 for (int i = 1;i <= n;i++) 31 { 32 int a,b; 33 scanf("%d%d",&a,&b); 34 if (bst.size() == 2) 35 { 36 flag = a; 37 bst.insert(b); 38 } 39 else if(a != flag) 40 { 41 int l =* --bst.lower_bound(b),r =* bst.lower_bound(b); 42 if (b - l <= r - b&&l > -INF) ans += b - l,bst.erase(l); 43 else ans += r - b,bst.erase(r); 44 ans %= mod; 45 } 46 else bst.insert(b); 47 } 48 printf("%d ",ans); 49 return 0; 50 }