锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲AV成人片,欧美日韩精品久久久免费观看,亚洲色欲久久久久综合网http://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 鍙戣〃璇勮
]]>
国产成人久久激情91 | 久久久久久精品免费看SSS| 亚洲国产天堂久久综合| 婷婷五月深深久久精品| 日韩一区二区久久久久久 | 久久精品国产99久久久| 国产国产成人久久精品| 亚洲AV无码成人网站久久精品大| 国产精品久久亚洲不卡动漫| 色婷婷综合久久久久中文字幕| 久久夜色精品国产网站| 久久综合九色欧美综合狠狠 | 国产精品久久久久aaaa| 欧美伊人久久大香线蕉综合69| 久久久久亚洲精品天堂| 色播久久人人爽人人爽人人片AV| 久久99国产精品一区二区| 久久天天躁夜夜躁狠狠躁2022| 狠狠色综合网站久久久久久久| 久久亚洲欧美国产精品| 日韩欧美亚洲综合久久| 热久久最新网站获取| 手机看片久久高清国产日韩| 91久久香蕉国产熟女线看| 久久精品男人影院| 亚洲va久久久噜噜噜久久狠狠| 久久天天婷婷五月俺也去| 亚洲精品99久久久久中文字幕| 四虎国产永久免费久久| 久久99国产精一区二区三区| 7777久久亚洲中文字幕| 国产亚洲精久久久久久无码| 伊人久久大香线蕉av一区| 精品久久人人爽天天玩人人妻| 久久久久亚洲AV无码专区首JN| 东方aⅴ免费观看久久av| 狠狠色综合网站久久久久久久高清 | 热久久视久久精品18| 伊人久久大香线蕉综合Av| 久久精品午夜一区二区福利| 久久丫精品国产亚洲av|