oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量。我真不知道除了調工資他還做什麼其它事情。
工資的頻繁調整很讓員工反感,尤其是集體扣除工資的時候,一旦某位員工發現自己的工資已經低於了合同規定的工資下界,他就會立刻氣憤地離開公司,並且再也不會回來了。每位員工的工資下界都是統一規定的。每當乙個人離開公司,我就要從電腦中把他的工資檔案刪去,同樣,每當公司招聘了一位新員工,我就得為他新建乙個工資檔案。
老闆經常到我這邊來詢問工資情況,他並不問具體某位員工的工資情況,而是問現在工資第k多的員工拿多少工資。每當這時,我就不得不對數萬個員工進行一次漫長的排序,然後告訴他答案。
好了,現在你已經對我的工作了解不少了。正如你猜的那樣,我想請你編乙個工資統計程式。怎麼樣,不是很困難吧?
如果某個員工的初始工資低於最低工資標準,那麼將不計入最後的答案內
輸入格式:
第一行有兩個非負整數n和min。n表示下面有多少條命令,min表示工資下界。
接下來的n行,每行表示一條命令。命令可以是以下四種之一:
名稱 格式 作用
i命令 i_k 新建乙個工資檔案,初始工資為k。如果某員工的初始工資低於工資下界,他將立刻離開公司。
a命令 a_k 把每位員工的工資加上k
s命令 s_k 把每位員工的工資扣除k
f命令 f_k 查詢第k多的工資
_(下劃線)表示乙個空格,i命令、a命令、s命令中的k是乙個非負整數,f命令中的k是乙個正整數。
在初始時,可以認為公司裡乙個員工也沒有。
輸出格式:
輸出檔案的行數為f命令的條數加一。
對於每條f命令,你的程式要輸出一行,僅包含乙個整數,為當前工資第k多的員工所拿的工資數,如果k大於目前員工的數目,則輸出-1。
輸出檔案的最後一行包含乙個整數,為離開公司的員工的總數。
輸入樣例#1:
9 10i 60
i 70
s 50
f 2i 30
s 15
a 5f 1
f 2
輸出樣例#1:
1020-1
2
i命令的條數不超過100000
a命令和s命令的總條數不超過100
f命令的條數不超過100000
每次工資調整的調整量不超過1000
新員工的工資不超過100000
調了2天,終於對了。。。
附**:
#include#include#includeusing namespace std;
int n,m,ans=0;
struct node
};node* rt;
inline int read()
while(c>='0'&&c<='9')
return date*w;
}void maintain(node* &u)
void turn(node* &u,int f)
void insert(node* &u,int x)/*
else if(u->v==x)*/
int y=x>=u->v?1:0;
insert(u->son[y],x);
if(u->son[y]->w>u->w)turn(u,y^1);
else maintain(u);
}void remove(node* &u)
if(u!=null)maintain(u);
}int sum(node* u,int k)
void add(node* &u,int x)
int main()
if(ch[0]=='a')
if(ch[0]=='s')
if(ch[0]=='f')
} printf("%d\n",ans);
return 0;
}
洛谷P1486 鬱悶的出納員
題目大意 維護乙個平衡樹,支援插入乙個數,刪除小於乙個值的所有數,k 大值查詢,每個節點權值加減乙個數。題解 所有節點權值加減操作可以考慮直接維護乙個全域性標記,刪除小於乙個值的所有數字為乙個二分的過程,複雜度為 o logn 具體做法為 若當前子樹根節點權值小於 x,則直接刪除整顆左子樹,繼續遍歷...
NOI2004, 洛谷P1486 鬱悶的出納員
題目描述 oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙...
洛谷 1486 鬱悶的出納員 Treap
題意概述 要求維護乙個序列支援以下操作 1,插入元素x 2,把序列的所有元素加上x 3,把序列的所有元素減去x,同時低於乙個給定的下限的元素馬上被刪除 4,詢問序列中第k大的元素。題解 treap 用乙個delta記錄元素的增減情況,即實際上的元素的值應該是qval root,x delta,那麼插...