2016京东实习生笔试题—拉选票

最少争取的票数:

#include<iostream>
#include<stdio.h>
#include<vector>
#include<set>
#include<functional>	
using namespace std;


int find_min(vector<int> vec,int N) {

	multiset<int, greater<int>> myset;
	for (int i = 1;i<N;++i) {
		myset.insert(vec[i]);
	}
	int start = vec[0];
	multiset<int, greater<int>>::iterator set_it = myset.begin();
	if (start > *set_it) return 0;
	else {
		while (start <= *set_it) {
			++start;
			int tmp = (*set_it - 1);
			myset.erase(set_it);
			myset.insert(tmp);
			set_it = myset.begin();
		}
		return (start - vec[0]);
	}
}


int main() {

	int N;

	while(cin>>N ){

		vector<int> vec;
		for (int i = 0;i<N;++i) {
			int aa;
			cin >> aa;
			vec.push_back(aa);
		}
		int min = find_min(vec, N);
		cout << min << endl;
	}
	
	return 0;
}


你可能感兴趣的:(2016京东实习生笔试题—拉选票)