• <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) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            国内精品久久久久久99| 久久亚洲国产最新网站| 色综合合久久天天综合绕视看 | 久久亚洲熟女cc98cm| 久久久久亚洲av无码专区 | 色综合久久天天综线观看| 久久综合国产乱子伦精品免费| 精品无码久久久久国产| 久久噜噜久久久精品66| 久久综合给合久久国产免费| 97精品国产97久久久久久免费| 久久人人爽人人爽人人片AV不| 国产成人99久久亚洲综合精品| 77777亚洲午夜久久多人| 国产精品久久久久乳精品爆 | av国内精品久久久久影院| 色偷偷88欧美精品久久久| 97久久香蕉国产线看观看| 亚洲中文久久精品无码ww16| 久久综合狠狠综合久久97色| 久久精品国产精品青草| 久久国产精品成人片免费| 狠狠精品久久久无码中文字幕| 色8激情欧美成人久久综合电| 久久99毛片免费观看不卡| 久久久无码一区二区三区| 国产色综合久久无码有码| 久久综合亚洲色HEZYO社区| 久久人人爽人人爽人人片AV麻烦| 国内精品伊人久久久久影院对白| 日本一区精品久久久久影院| 久久精品国产99久久无毒不卡| 久久人人爽爽爽人久久久| 亚洲精品乱码久久久久久蜜桃图片| 亚洲а∨天堂久久精品9966| 久久最新免费视频| 亚洲国产日韩综合久久精品| 中文字幕日本人妻久久久免费 | 波多野结衣中文字幕久久| 久久人妻少妇嫩草AV无码专区| 一本色道久久99一综合|