• <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 閱讀(411) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)
            久久久久久伊人高潮影院| 久久天天躁狠狠躁夜夜网站| 伊人久久大香线蕉精品| 久久青青草原精品国产软件| 久久午夜福利无码1000合集| 久久91亚洲人成电影网站| 日本欧美国产精品第一页久久| 中文字幕乱码人妻无码久久| AV无码久久久久不卡蜜桃| 久久免费视频1| 久久精品国产色蜜蜜麻豆| 欧美va久久久噜噜噜久久| 无码精品久久一区二区三区| 国产精品99久久精品| 综合网日日天干夜夜久久| 久久一本综合| 国产精品成人无码久久久久久| 久久天堂AV综合合色蜜桃网| 久久久噜噜噜久久| 精品久久久久久久久久中文字幕 | 久久香蕉国产线看观看精品yw| 亚洲午夜精品久久久久久人妖| 久久亚洲欧美国产精品| 久久久久免费精品国产| 欧美久久综合九色综合| 精品久久久久中文字幕一区| 久久精品亚洲日本波多野结衣| 久久国产劲爆AV内射—百度| 午夜精品久久久久久影视777 | 久久精品国产亚洲AV香蕉| 久久99亚洲综合精品首页| 中文字幕亚洲综合久久2| 久久精品一区二区三区不卡| 久久精品无码专区免费青青| 久久久一本精品99久久精品66 | 人妻无码久久精品| 精品国产一区二区三区久久蜜臀| 99久久精品国产一区二区| 国产精品99久久久久久董美香| 久久久久久久尹人综合网亚洲 | 久久九色综合九色99伊人|