錦標賽



時間限制:1秒
空間限制:32768K

題目描述

組委會正在爲美團點評CodeM大賽的決賽設計新賽制。

比賽有 n 個人參加(其中 n 爲2的冪),每個參賽者根據資格賽和預賽、複賽的成績,會有不同的積分。比賽採取錦標賽賽制,分輪次進行,設某一輪有 m 個人參加,那麼參賽者會被分爲 m/2 組,每組恰好 2 人,m/2 組的人分別廝殺。我們假定積分高的人肯定獲勝,若積分一樣,則隨機產生獲勝者。獲勝者獲得參加下一輪的資格,輸的人被淘汰。重複這個過程,直至決出冠軍。

現在請問,參賽者小美最多可以活到第幾輪(初始爲第0輪)?
輸入描述:
第一行一個整數 n (1≤n≤ 2^20),表示參加比賽的總人數。

接下來 n 個數字(數字範圍:-1000000…1000000),表示每個參賽者的積分。

小美是第一個參賽者。


輸出描述:
小美最多參賽的輪次。

輸入例子:
4
4 1 2 3
輸出例子:
2
就是把所有積分<=小美的挑出來,然後讓他們之間比,小美肯定在食物鏈頂端(也就是一個滿二叉樹的根節點),所以你只要判斷這麼多點能組成的滿二叉樹最高高度是多少就行了

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>

const int maxn = 1050;

int main()
{
	//freopen("Text.txt", "r", stdin);
	int n, a,b,c;
	while (scanf("%d", &n)!=EOF) {
		c = 1;
		scanf("%d", &a);
		while (n>1) {
			scanf("%d", &b);
			if (b <= a)
				c++;
			n--;
		}
		//printf("%d\n", c);
		printf("%d\n", (int)log2(c));
	}
	return 0;
}
發佈了87 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章