• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            #include? < iostream >
            #include?
            < algorithm >
            #include?
            < cstdio >
            #include?
            < cstdlib >
            #include?
            < cstring >

            using ? namespace ?std;

            #define ?N?40001
            #define ?max(a,b)?(?(a)>(b)?(a):(b)?)

            int ?n,d[N << 1 ],?idx[N << 1 ],?pos,?f[N << 1 ];

            struct ?Node{
            ????
            int ?x,?y,?ht;
            ????Node(?
            int ?a = ? 0 ,? int ?b = ? 0 ,? int ?c = ? 0 ?):x(a),?y(b),?ht(c)?{}
            };

            bool ? operator < (?Node? const & ?a,?Node? const & b?){
            ????
            return ?a.ht < ?b.ht;?}
            Node?xyh[N];

            int ?bsearch(? int ?v?){
            ????
            int ?left = ? 0 ,?right = ?n * ? 2 ;
            ????
            while (?left + ? 1 < ?right?){
            ????????
            int ?m = ?(left + right) >> 1 ;
            ????????
            if (?d[m] > ?v?)?right = ?m;
            ????????
            else ? if (?d[m] < ?v?)?left = ?m;
            ????????
            else ? return ?idx[m];
            ????}
            ????
            return ?idx[left];?}

            int ?tb[N * 8 ] = ?{ 0 };

            void ?insert(? int ?l,? int ?r,? int ?a,? int ?b,? int ?rt,? int ?h?){
            ????
            if (?l == ?a? && ?r == ?b?){
            ????????tb[rt]
            = ?max(?tb[rt],?h?);? return ;?}
            ????
            if (?tb[rt] != ? 0 ?){
            ????????tb[rt
            << 1 ] = ?tb[rt];
            ????????tb[(rt
            << 1 ) + 1 ] = ?tb[rt];
            ????????tb[rt]
            = ? 0 ;?}
            ????
            int ?m = ?(l + ?r) >> 1 ;
            ????
            if (?b <= ?m?)?insert(?l,?m,?a,?b,?rt << ? 1 ,?h?);
            ????
            else ? if (?a >= ?m?)?insert(?m,?r,?a,?b,?(rt << 1 ) + ? 1 ,?h?);
            ????
            else {
            ????????insert(?l,?m,?a,?m,?rt
            << ? 1 ,?h?);
            ????????insert(?m,?r,?m,?b,?(rt
            << 1 ) + ? 1 ,?h?);?}
            }

            typedef?__int64?INT;

            INT?ans;
            void ?sum(? int ?l,? int ?r,? int ?rt?){
            ????
            if (?tb[rt] > ? 0 ?){
            ????????ans
            = ?ans + ?(INT)(?f[r] - ?f[l]?) * ?(INT)tb[rt];
            ????????
            return ;?}
            ????
            if (?r > ?l + ? 1 ?){
            ????????
            int ?m = ?(l + ?r) >> ? 1 ;
            ????????sum(?l,?m,?rt
            << ? 1 ?);
            ????????sum(?m,?r,?(rt
            << 1 ) + ? 1 ?);
            ????}????????
            }

            inline?
            int ?read(){
            ????
            char ?ch;
            ????
            int ?d;
            ????
            while (?(ch = ?getchar()),?ch < ? ' 0 ' ? || ?ch > ? ' 9 ' ?);
            ????d
            = ?ch - ? ' 0 ' ;
            ????
            while (?(ch = ?getchar()),?ch >= ? ' 0 ' ? && ?ch <= ? ' 9 ' ?)?d = ?d * ? 10 + ?ch - ? ' 0 ' ;
            ????
            return ?d;?}
            ????
            int ?main(){
            ????
            int ?a,?b,?h;
            ????scanf(
            " %d " , & n);
            ????
            for (? int ?i = ? 0 ;?i < ?n;? ++ i?){
            ????????a
            = ?read(),?b = ?read(),?h = ?read();
            ????????xyh[i]
            = ?Node(?a,?b,?h?);
            ????????d[i
            << 1 ] = ?a,?d[(i << 1 ) + 1 ] = ?b;?}
            ????sort(?d,?d
            + ?n * ? 2 ?);
            ????pos
            = ? 1 ;?idx[ 0 ] = ? 1 ;?f[ 1 ] = ?d[ 0 ];
            ????
            for (? int ?i = ? 1 ;?i < ?n * ? 2 ;? ++ i?){
            ????????
            if (?d[i] != ?d[i - 1 ]?)?idx[i] = ? ++ pos;
            ????????
            else ?idx[i] = ?idx[i - 1 ];
            ????????f[?idx[i]?]
            = ?d[i];
            ????}
            ????sort(?xyh,?xyh
            + ?n?);
            ????
            for (? int ?i = ? 0 ;?i < ?n;? ++ i?){
            ????????a
            = ?bsearch(?xyh[i].x?),?b = ?bsearch(?xyh[i].y?);
            ????????insert(?
            1 ,?pos,?a,?b,? 1 ,?xyh[i].ht?);
            ????}????????
            ????ans
            = ? 0 ;?
            ????sum(?
            1 ,?pos,? 1 ?);
            ????printf(
            " %I64d\n " ,?ans?);
            ????
            ????
            return ? 0 ;
            }

            posted on 2009-07-15 12:39 Darren 閱讀(429) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)
            精品久久久久久无码专区| 久久影院久久香蕉国产线看观看| 亚洲va久久久噜噜噜久久狠狠 | 国产成人精品久久综合 | 精品久久久久久久无码| 久久综合九色综合97_久久久| 久久精品国产亚洲Aⅴ蜜臀色欲| 人妻无码αv中文字幕久久琪琪布| 久久精品人人做人人爽97 | 91精品久久久久久无码| 国产69精品久久久久9999APGF| 国产欧美一区二区久久| 亚洲精品视频久久久| 久久国产免费观看精品| 久久综合九色综合网站| 久久综合给合综合久久| 99久久精品费精品国产| 国产精品久久亚洲不卡动漫| 思思久久精品在热线热| 开心久久婷婷综合中文字幕| 久久夜色精品国产亚洲| 久久精品国产亚洲AV无码偷窥| 伊人色综合久久天天人守人婷| 国产亚州精品女人久久久久久 | 国产午夜精品久久久久九九电影 | 亚洲?V乱码久久精品蜜桃 | 狠狠色婷婷综合天天久久丁香| 亚洲精品无码久久千人斩| 久久亚洲精品无码VA大香大香| 久久久久国产一区二区| 国产成人无码精品久久久免费| 久久国产成人精品麻豆| 亚洲国产成人久久综合一 | WWW婷婷AV久久久影片| 99久久99这里只有免费的精品| 久久久一本精品99久久精品88 | 亚洲国产另类久久久精品小说| 亚洲va久久久噜噜噜久久狠狠 | 久久人人添人人爽添人人片牛牛| 亚洲精品视频久久久| 亚洲中文字幕无码久久综合网|