• <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 閱讀(410) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            久久综合九色综合久99| 日产精品久久久一区二区| 99精品久久精品一区二区| 99久久精品午夜一区二区| 99久久国产综合精品五月天喷水| 欧美亚洲另类久久综合婷婷| 久久AV高潮AV无码AV| 久久久久中文字幕| 久久人人爽人人爽人人片av麻烦| 精品久久久久久久无码| 久久影院久久香蕉国产线看观看| 久久国产乱子伦免费精品| 精品久久久久久久久免费影院 | 久久久精品免费国产四虎| 久久久精品视频免费观看| 国产精品久久久久…| 久久大香萑太香蕉av| 99久久婷婷国产一区二区 | 久久精品人人做人人妻人人玩 | 99蜜桃臀久久久欧美精品网站| 久久夜色精品国产亚洲| 久久久这里有精品| 久久免费国产精品| 亚洲国产精品一区二区久久| 久久精品亚洲中文字幕无码麻豆| 久久午夜免费视频| 久久性精品| 亚洲国产综合久久天堂| 亚洲精品美女久久久久99小说| 久久99精品久久久久久水蜜桃| 久久亚洲国产午夜精品理论片 | 无码国内精品久久人妻| 国产精品久久新婚兰兰| 国内精品久久国产| 亚洲国产日韩欧美久久| 欧美麻豆久久久久久中文| 久久久久久无码国产精品中文字幕| 久久国产成人午夜aⅴ影院 | 国产精品美女久久久久av爽| 99久久精品久久久久久清纯 | 国产免费久久精品99re丫y|