51nod1431 快樂排隊

2021-08-09 08:48:14 字數 1155 閱讀 2425

1431 快樂排隊

codeforces

基準時間限制:1 秒 空間限制:131072 kb 分值: 80 

難度:5級演算法題

有一群人在排隊,如果某個人想排到前面去,可以花一元錢給直接站在他前面的人,然後和這個人交換位置。如果自己沒有錢了,就不能和前面的人交換。

但是呢,佇列裡面的人覺得排他前面的所有人一定要比較有錢的,至少不能比他自己拿的少。否則裡面就會有人生氣。站在隊頭的人一定是高興的。

現在給出乙個佇列的初始狀態,問能不能調整佇列,使得裡面的人都高興。

樣例解釋:樣例1中,隊尾的人可以和前面的人交換,變成9 10。

input

單組測試資料。

第一行包含乙個整數n (1 ≤ n ≤ 200,000),表示佇列中的人數。

第二行包含n個空格分開的整數 ai (0 ≤ ai ≤ 10^9),ai表示佇列中第i個人手上拿的錢。編號從隊尾開始。

output

input示例

2

11 8

29 8

output示例

sad對於乙個i 如果 向左交換 會收到一塊錢 位置減1

向右交換 會減少一塊錢 位置加 1 所以 錢數+位置編號無論怎麼換都不會變

1 #include 2 #include 3 #include 4

5const

int maxn=1000010;6

7int

t,n,ans;89

intzs[maxn];

1011 inline void read(int&x)

1718

inthh()

21 std::sort(zs+1,zs+1+n);

22int t=std::unique(zs+1,zs+1+n)-zs-1;23

if(t==n) printf("");

24else printf("

sad\n");

25}26return0;

27}2829

int sb=hh();

30int main(int argc,char**argv)

**

51nod排隊接水

n個人一起排隊接水,第i個人需要b i 的時間來接水。1 n 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。input 第一行乙個整數n 接下來n行,每行...

51Nod 排隊接水 貪心

n n 個人一起排隊接水,第 i role presentation i i個人需要b i b i 的時間來接水。1 n 1000 1 n 1000 0 b i 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決...

貪心演算法 51nod排隊接水

n個人一起排隊接水,第i個人需要b i 的時間來接水。1 n 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。收起第一行乙個整數n 接下來n行,每行乙個整數...