锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲AV成人片,欧美日韩精品久久久免费观看,亚洲色欲久久久久综合网http://m.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://m.shnenglu.com/ZAKIR/articles/125145.htmlZAKIRZAKIRSun, 29 Aug 2010 03:42:00 GMThttp://m.shnenglu.com/ZAKIR/articles/125145.htmlhttp://m.shnenglu.com/ZAKIR/comments/125145.htmlhttp://m.shnenglu.com/ZAKIR/articles/125145.html#Feedback0http://m.shnenglu.com/ZAKIR/comments/commentRss/125145.htmlhttp://m.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 鍙戣〃璇勮
]]>
久久只这里是精品66| 一本一本久久aa综合精品| 国产亚洲精品美女久久久| 久久国产亚洲高清观看| 伊人久久免费视频| 久久亚洲高清综合| 少妇精品久久久一区二区三区| 亚洲国产精品成人久久| 久久精品国产一区二区| 性欧美大战久久久久久久久| 伊人久久大香线焦综合四虎| 丁香色欲久久久久久综合网| 久久99精品久久久久久噜噜| 久久久久亚洲AV成人网人人网站| 久久久久久久99精品免费观看| 久久婷婷午色综合夜啪| 中文字幕一区二区三区久久网站 | 一本久久知道综合久久| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久精品国产久精国产果冻传媒 | 午夜精品久久久久久99热| 久久国产精品波多野结衣AV| 久久婷婷色综合一区二区| 久久精品国产99久久丝袜| 99久久人妻无码精品系列| 国产精久久一区二区三区| 久久99精品国产麻豆宅宅| 欧美久久久久久精选9999| 久久亚洲国产精品一区二区| 久久妇女高潮几次MBA| 久久黄视频| 久久人人爽人爽人人爽av| 国产精品久久一区二区三区| 久久天天躁夜夜躁狠狠| 久久亚洲国产精品五月天婷| Xx性欧美肥妇精品久久久久久| 国内精品久久久久久久97牛牛| 久久国产免费直播| 日韩精品久久无码中文字幕| 久久久久人妻一区二区三区vr| 亚洲综合伊人久久大杳蕉|