锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产农村妇女毛片精品久久,怡红院日本一道日本久久,亚洲婷婷国产精品电影人久久http://www.shnenglu.com/master0503/category/8194.html涓嶉爤璦堣純鑸囧畨鎺?闋樺彇鑰屼粖鐝懼湪zh-cnMon, 24 Nov 2008 06:36:18 GMTMon, 24 Nov 2008 06:36:18 GMT602182 Lost Cowshttp://www.shnenglu.com/master0503/articles/67624.html騫繪氮澶╃┖棰嗕富騫繪氮澶╃┖棰嗕富Sat, 22 Nov 2008 12:36:00 GMThttp://www.shnenglu.com/master0503/articles/67624.htmlhttp://www.shnenglu.com/master0503/comments/67624.htmlhttp://www.shnenglu.com/master0503/articles/67624.html#Feedback0http://www.shnenglu.com/master0503/comments/commentRss/67624.htmlhttp://www.shnenglu.com/master0503/services/trackbacks/67624.htmlLost Cows
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 2824 Accepted: 1742

Description

N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neighborhood 'watering hole' and drank a few too many beers before dinner. When it was time to line up for their evening meal, they did not line up in the required ascending numerical order of their brands.

Regrettably, FJ does not have a way to sort them. Furthermore, he's not very good at observing problems. Instead of writing down each cow's brand, he determined a rather silly statistic: For each cow in line, he knows the number of cows that precede that cow in line that do, in fact, have smaller brands than that cow.

Given this data, tell FJ the exact ordering of the cows.

Input

* Line 1: A single integer, N

* Lines 2..N: These N-1 lines describe the number of cows that precede a given cow in line and have brands smaller than that cow. Of course, no cows precede the first cow in line, so she is not listed. Line 2 of the input describes the number of preceding cows whose brands are smaller than the cow in slot #2; line 3 describes the number of preceding cows whose brands are smaller than the cow in slot #3; and so on.

Output

* Lines 1..N: Each of the N lines of output tells the brand of a cow in line. Line #1 of the output tells the brand of the first cow in line; line 2 tells the brand of the second cow; and so on.

Sample Input

5
1
2
1
0

Sample Output

2
4
5
3
1

Source



Analysis

Which number can we determine at the first glance of the input data? Of course, the answer is the tail. Suppose the last number of the input data, which is the number of cows with lower brand number than it, is a[n]. According to the defination, the last cow gets the (a[n]+1)th number, since there are a[n] brand number before. What's more, the brand number is constrained in range from 1 to n, so the last number is well ensured.

Later, the earlier one will be determined in a set containing the numbers range from 1 to n except b[n], which is the brand number of the last cow. Obviously, the brand number is the (a[n-1]+1)th number in the set. The problem turns to be the method to save and search used numbers. If we create a constantly array, the cost of time in deleting and searching is both O(n) and the whole cost is o(n^2). Just consider about the segment tree. Create a segment tree of range [1,n], and the number of tree[p] is the number of brands used. When a number is inserting, calculate the remaining number of the left range: m-l+1-tree[p]. If it is larger than the current number, which is a[i]+1, then searching the left child. Otherwise, search the right one. When it is searching, adding the current root since it is clear to see that a new member is coming now. At last, when the search comes to an end and find a leave, record the range number.

My code:

#include <stdio.h>
#include 
<stdlib.h>
#include 
<memory.h>
#define MAX 8000

int main(){
    
int n,i;
    
int a[MAX],b[MAX];
    
int tree[4*MAX+1];
    scanf(
"%d",&n);
    a[
0]=0;
    
for (i=1;i<n;i++)
        scanf(
"%d",a+i);
    
for (i=n-1;i>=0;i--){
        
int l,r,p,m,no;
        no
=a[i]+1;
        l
=1;r=n;p=1;
        
while (l<r){
            tree[p]
++;
            m
=(l+r)>>1;
            
if (m-l+1-tree[2*p]>=no ){
                r
=m;
                p
<<=1;
            }

            
else {
                no
-=m-l+1-tree[2*p];
                l
=m+1;
                p
=2*p+1;                
            }

        }

        tree[p]
++;
        b[i]
=l;
    }

    
for (i=0;i<n;i++)
        printf(
"%d\n",b[i]);
    
return 0;
}



騫繪氮澶╃┖棰嗕富 2008-11-22 20:36 鍙戣〃璇勮
]]>
久久国产成人亚洲精品影院| 久久99精品国产麻豆宅宅| 国产巨作麻豆欧美亚洲综合久久| 国产精品久久久久影院色| 99久久精品这里只有精品 | 麻豆精品久久精品色综合| 一本伊大人香蕉久久网手机| 久久久久国产视频电影| 漂亮人妻被黑人久久精品| 99热精品久久只有精品| 777午夜精品久久av蜜臀| 久久99久久成人免费播放| 中文无码久久精品| 久久国产香蕉视频| 成人久久精品一区二区三区| 久久天天躁狠狠躁夜夜2020一| 久久精品嫩草影院| 久久婷婷五月综合国产尤物app | 午夜天堂av天堂久久久| 久久无码精品一区二区三区| 精品人妻久久久久久888| 国产精品久久久久a影院| 久久激情亚洲精品无码?V| 久久国产福利免费| 国产免费久久精品丫丫| 97久久久精品综合88久久| 久久丫精品国产亚洲av不卡| 久久婷婷是五月综合色狠狠| 韩国三级中文字幕hd久久精品 | 国产精品久久久久久搜索| 亚洲va中文字幕无码久久不卡| 久久综合亚洲色HEZYO国产| 久久精品女人天堂AV麻| 狠狠人妻久久久久久综合| 婷婷综合久久狠狠色99h| 91久久婷婷国产综合精品青草| 亚洲va久久久噜噜噜久久狠狠| 精产国品久久一二三产区区别| 无码人妻久久一区二区三区蜜桃 | 久久99精品久久久久婷婷| 精品熟女少妇av免费久久|