锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲а∨天堂久久精品9966,精品久久久久久无码国产,久久久久99这里有精品10http://www.shnenglu.com/ZAKIR/category/14781.html錕?鏂桟ode騫村崕=錕?/description>zh-cnMon, 30 Aug 2010 07:05:21 GMTMon, 30 Aug 2010 07:05:21 GMT60POJ 3277 City Horizonhttp://www.shnenglu.com/ZAKIR/articles/125145.htmlZAKIRZAKIRSun, 29 Aug 2010 03:42:00 GMThttp://www.shnenglu.com/ZAKIR/articles/125145.htmlhttp://www.shnenglu.com/ZAKIR/comments/125145.htmlhttp://www.shnenglu.com/ZAKIR/articles/125145.html#Feedback0http://www.shnenglu.com/ZAKIR/comments/commentRss/125145.htmlhttp://www.shnenglu.com/ZAKIR/services/trackbacks/125145.html  1 #include <iostream>
  2 #include <algorithm>
  3 #include <cstdio>
  4 using namespace std;
  5 
  6 const int MaxSize=90001;
  7 
  8 struct Node
  9 {    int left,right,mid;
 10     int hight;
 11 };
 12 
 13 
 14 struct Building
 15 {    int left,right,hight;
 16 }b[40001];
 17 bool cmp(Building a,Building b)
 18 {    return a.hight>b.hight;}
 19 
 20 Node itree[3*MaxSize];
 21 
 22 void Build(int l,int r,int num)
 23 {    itree[num].left=l;
 24     itree[num].right=r;
 25     itree[num].mid=(l+r)/2;
 26     itree[num].hight=0;
 27 
 28     if(l+1!=r)
 29     {    Build(l,itree[num].mid,num<<1);
 30         Build(itree[num].mid,r,(num<<1)+1);
 31     }
 32 }
 33 
 34 void Insert(int l,int r,int h,int num)
 35 {    if(itree[num].left==l&&itree[num].right==r)
 36     {    if(h>itree[num].hight)
 37             itree[num].hight=h;
 38         return;
 39     }
 40     if(r<=itree[num].mid)
 41         Insert(l,r,h,num<<1);
 42     else if(l>=itree[num].mid)
 43         Insert(l,r,h,(num<<1)+1);
 44     else
 45     {    Insert(l,itree[num].mid,h,num<<1);
 46         Insert(itree[num].mid,r,h,(num<<1)+1);
 47     }
 48 }
 49 
 50 
 51 int hash[MaxSize];
 52 
 53 long long Calc(int h,int num)
 54 {    if(h>itree[num].hight)
 55         itree[num].hight=h;
 56     if(itree[num].left+1==itree[num].right)
 57     {    return (long long)itree[num].hight*(hash[itree[num].right]-hash[itree[num].left]);
 58     }
 59     return Calc(itree[num].hight,num<<1)+Calc(itree[num].hight,(num<<1)+1);
 60 }
 61 
 62 int BinarySearch(int *from,int *end,int key)
 63 {    int low=0,high=end-from;
 64     int mid=(low+high)/2;
 65     while(low<=high)
 66         if(from[mid]==key)
 67             return mid;
 68         else if(from[mid]>key)
 69         {    high=mid-1;                
 70             mid=(high+low)/2;                
 71         }    
 72         else        
 73         {    low=mid+1;        
 74             mid=(high+low)/2;                
 75         }            
 76     return mid;
 77 }
 78 
 79 
 80 int main()
 81 {
 82     int N;
 83     scanf("%d",&N);
 84     for(int i=0;i<N;i++)
 85     {    scanf("%d%d%d",&b[i].left,&b[i].right,&b[i].hight);
 86         hash[i<<1]=b[i].left;
 87         hash[(i<<1)+1]=b[i].right;
 88     }
 89     int hlen=0;
 90     sort(hash,hash+2*N);
 91     sort(b,b+N,cmp);
 92     for(int i=0;i<2*N-1;i++)
 93         if(hash[i]!=hash[i+1])
 94             hash[++hlen]=hash[i+1];
 95     hlen++;
 96     Build(0,hlen,1);
 97     for(int i=0;i<N;i++)
 98     {    int l=BinarySearch(hash,hash+hlen,b[i].left);
 99         int r=BinarySearch(hash,hash+hlen,b[i].right);
100         Insert(l,r,b[i].hight,1);
101     }
102     cout<<Calc(0,1)<<endl;
103     //printf("%I64d\n",Calc(0,1));
104     return 0;    
105 }

ZAKIR 2010-08-29 11:42 鍙戣〃璇勮
]]>
性高朝久久久久久久久久| 国产成年无码久久久久毛片| 欧美亚洲色综久久精品国产| 中文精品久久久久人妻| 污污内射久久一区二区欧美日韩| 国产精品无码久久久久| 国产L精品国产亚洲区久久| 夜夜亚洲天天久久| 精品久久久久久国产免费了| 丁香久久婷婷国产午夜视频| 欧美伊香蕉久久综合类网站| 青青青国产成人久久111网站| 久久九九有精品国产23百花影院| 国产精品久久久久久一区二区三区 | 久久久久国产精品嫩草影院| 日本加勒比久久精品| 久久久久国产精品嫩草影院| 久久乐国产精品亚洲综合| 综合久久一区二区三区| 亚洲AV日韩AV永久无码久久| 97久久精品国产精品青草| 99热都是精品久久久久久| 久久国产高清一区二区三区| 色妞色综合久久夜夜| 欧美噜噜久久久XXX| 精品多毛少妇人妻AV免费久久 | 日韩精品无码久久久久久| 久久精品国产99国产精偷| 色综合久久久久综合99| 久久不见久久见免费视频7| 精品国产91久久久久久久a| 国内精品久久久久久久久电影网 | 香蕉久久一区二区不卡无毒影院 | 精品久久久久久久| 久久九九久精品国产| 久久A级毛片免费观看| 亚洲欧美一区二区三区久久| 精品精品国产自在久久高清| 18禁黄久久久AAA片| 国产精品九九久久免费视频 | 国产成人久久精品激情|