• <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 閱讀(417) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            亚洲国产精品无码久久青草| 色欲久久久天天天综合网| 国产精品久久亚洲不卡动漫| 久久精品国产亚洲麻豆| 久久精品视屏| 久久精品麻豆日日躁夜夜躁| 欧美日韩中文字幕久久伊人| 亚洲v国产v天堂a无码久久| 久久精品a亚洲国产v高清不卡| 99久久精品免费观看国产| 久久亚洲AV成人无码| 91亚洲国产成人久久精品| 伊人久久大香线蕉AV色婷婷色| 品成人欧美大片久久国产欧美...| 亚洲欧美精品一区久久中文字幕 | 国产成年无码久久久免费| 国产精品久久一区二区三区| 99久久免费国产精品特黄| 久久精品无码一区二区三区日韩| 久久精品亚洲日本波多野结衣 | 久久精品亚洲精品国产色婷 | 欧美午夜A∨大片久久 | 久久人人爽人人爽人人AV东京热| 国产高潮久久免费观看| 国产亚洲精品美女久久久| 99精品国产99久久久久久97| 久久青青草原精品国产软件| 91精品日韩人妻无码久久不卡| 国产亚洲精品美女久久久| 久久精品国产网红主播| 亚洲国产精品高清久久久| 国产精品久久久久久久久久影院 | 欧美噜噜久久久XXX| av色综合久久天堂av色综合在| 日韩久久久久中文字幕人妻| 久久精品国产精品亚洲艾草网美妙| 亚洲嫩草影院久久精品| 久久久久久久综合日本亚洲| 成人免费网站久久久| 国产一区二区精品久久| 91亚洲国产成人久久精品|