问题描述
小U在一款挂机游戏中拥有n个英雄。游戏中有一种历练升级机制,每天可以选择两个英雄进行历练,如果两位英雄的等级相同,则他们的等级都不会改变。如果英雄等级不同,那么等级较高的英雄
会增加1级,而等级较低的英雄则保持不变。
小U希望至少有一个英雄能够达到2000000000000000级,他想知道有多少英雄有潜力通过历练达到这个等级。
测试样例
样例1:
输入:n=5,u=[1,2,3,1,2]输出:3
样例2:
输入:n=4,u=[100000,100000,100000,100000]输出:0
样例3:
输入:n=6,u=[1,1,1,2,2,2]输出:3
题解:
就是简单的排序,不知道为什么算难题。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include <functional>
using namespace std;
typedef long long int ll;
const int A=10e9+7;
int cmp(int x ,int y){
return x<y;
}
int solution(int n, std::vector<int> u) {
// write code here
int i,ans=0,t=0;
sort(u.begin(),u.end(),cmp);
t=u[0];
for(i=0;i<u.size();i++){
if(u[i]!=t){
ans=n-i;
break;
}
}
//cout << ans << "\n";
return ans;
}
int main() {
std::cout << (solution(5, {1, 2, 3, 1, 2}) == 3) << std::endl;
std::cout << (solution(4, {100000, 100000, 100000, 100000}) == 0) << std::endl;
std::cout << (solution(6, {1, 1, 1, 2, 2, 2}) == 3) << std::endl;
}