描述:长度为n的数组arr,进行以下操作:选择最小的arr进行+1操作,输出一个正整数表示执行完k次操作之后最小的最大值
输入:n k(数组长度 操作次数 3 3)
1 2 3(数组值)
输出:3
说明:第一次操作选择arr[0] 令arr[0]=arr[0]+1 [2 2 3]
第二次操作选择arr[0] 令arr[0]=arr[0]+1 [3 2 3]
第二次操作选择arr[1] 令arr[1]=arr[1]+1 [3 3 3]
一、针对int[n]的数组:
#include<iostream>
#include<vector>
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k;cin>>n>>k;
int arr[n];
for(int i=0;i<n;i++){
cin>>arr[i];
}
for(int i=0;i<k;i++){
int minpos=min_element(arr,arr+n)-arr;
arr[minpos]=arr[minpos]+1;
}
int minpos=min_element(arr,arr+n)-arr;
cout<<arr[minpos]<<endl;
}
二、针对vector的数组
#include <bits/stdc++.h>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,k;cin>>n>>k;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
for(int i=0;i<k;i++){
vector<int>::iterator minpos = min_element(arr.begin(), arr.end());
*minpos=*minpos+1;
}
vector<int>::iterator minpos = min_element(arr.begin(), arr.end());
cout<<*minpos<<endl;
return 0;
}
|