time limit: 5 sec memory limit: 64 mb
submit: 11759 solved: 4163
[submit][status][discuss]
oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量。我真不知道除了調工資他還做什麼其它事情。工資的頻繁調整很讓員工反感,尤其是集體扣除工資的時候,一旦某位員工發現自己的工資已經低於了合同規定的工資下界,他就會立刻氣憤地離開公司,並且再也不會回來了。每位員工的工資下界都是統一規定的。每當乙個人離開公司,我就要從電腦中把他的工資檔案刪去,同樣,每當公司招聘了一位新員工,我就得為他新建乙個工資檔案。老闆經常到我這邊來詢問工資情況,他並不問具體某位員工的工資情況,而是問現在工資第k多的員工拿多少工資。每當這時,我就不得不對數萬個員工進行一次漫長的排序,然後告訴他答案。好了,現在你已經對我的工作了解不少了。正如你猜的那樣,我想請你編乙個工資統計程式。怎麼樣,不是很困難吧?
輸出檔案的行數為f命令的條數加一。對於每條f命令,你的程式要輸出一行,僅包含乙個整數,為當前工資第k多的員工所拿的工資數,如果k大於目前員工的數目,則輸出-1。輸出檔案的最後一行包含乙個整數,為離開公司的員工的總數。
9 10
i 60
i 70
s 50
f 2i 30
s 15
a 5f 1
f 210
20-1
2i命令的條數不超過100000 a命令和s命令的總條數不超過100 f命令的條數不超過100000 每次工資調整的調整量不超過1000 新員工的工資不超過100000
#include #includeac**#include
#include
#define n 100010
#define ls(x) tr[x].l
#define rs(x) tr[x].r
#define fa(x) tr[x].fa
using
namespace
std;
struct
node
;node tr[n];
intn,m,tot,root,delta,sum;
void pushup(int
x)void zig(int
x)void zag(int
x)void splay(int x,intd)}
void insert(int
x)
int p=root,z;
while
(p)
if(xtot;
else rs(z)=++tot;
tr[tot].v=x,tr[tot].size=1,fa(tot)=z;
splay(tot,0);
}int del(int &x,int
f)else
returnk;}
int query(int x,int
k)int
main()
cout
return0;
}
#include#include洛谷a,bzoj re#include
#include
#define n 1000007
using
namespace
std;
int f[n],ch[n][2
],siz[n],cnt[n],key[n];
int lim,n,m,ans,tot,x,y,sz,root;char
c;inline
intread()
while(c>='
0'&&c<='9')
return x*f;
}inline
void update(int
x)int
pre()
intnex()
int getson(int
x)void rorate(int
x)void splay(int
x)int findpos(int
x) ans+=cnt[now];now=ch[now][1
]; }
}}int findx(int
x) }
}void clear(int
x)void creat(int
x)void insert(int
x) fa=now;now=ch[fa][x>key[fa]];
if(!now)}}
}void del(int
x)
if(!ch[root][0]&&!ch[root][1
])
if(!ch[root][0
])
if(!ch[root][1
])
int pre1=pre(),tmp=root;splay(pre1);
ch[root][
1]=ch[tmp][1];f[ch[tmp][1]]=root;
clear(tmp);update(root);
}inline
void
del_tree()
intmain()
if(c=='f'
)
}printf(
"%d\n
",ans);
return0;
}
bzoj1503 鬱悶的出納員
oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的 工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好 就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的...
BZOJ1503 鬱悶的出納員
出納員是乙個優秀的職業。根據題意要構造一種資料結構使得能動態維護乙個權值大於等於min的集合,並且支援查詢排名等操作,資料範圍來看複雜度是nlogn 由以上得出結論使用平衡樹 我用的是treap,如果刪的話就要把整顆左子樹和根節點一起刪再處理右子樹的,其他操作和普通平衡樹一樣,可以看我之前那個模板。...
鬱悶的出納員(bzoj 1503)
oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量...