🔓알고리즘/수학

여러개의 최댓값,최솟값 찾기 C++

Mawile 2020. 11. 8.
728x90

 

개발환경 >> DevCpp

언어 >> C++11 WinAPI

운영체제 >> Windows10

 


 

 

안녕하세요!!!

이번에는 심심해서

vector에 저장된값에서

여러개의 최댓값과 최솟값을 동시에 찾는 알고리즘을 만들어봤습니다~~~

 

 


 

<<  여러개의 최댓값, 최솟값 찾기  >>

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef pair<double,double> pii;

int main(){
	vector<pii>ans;
	vector<double>db;
	double d;
	int n,j,s;
	
	cin >> n >> s; //원소갯수,구할 최댓값 최솟값의 갯수
	if(s*2>n) return 0;
	for(j=0;j<n;j++){
		cin >> d;
		db.push_back(d);
	}
	
	for(j=0;j<s;j++){
		auto a = minmax_element(db.begin(),db.end());
		ans.push_back(pii(*a.first,*a.second)); //최댓값과 최솟값 넣기
		db.erase(a.first);
		if(a.first<a.second) db.erase(a.second-1); //찾은최솟값이 최댓값보다 배열상에서 앞에있을경우
		else db.erase(a.second); //찾은최솟값이 최댓값보다 배열상에서 뒤에있을경우
	}
	
	cout << endl;
	for(j=0;j<ans.size();j++) cout << ans[j].first << " " << ans[j].second << endl;
}

 

 

 

 

 

 

궁금한 부분이 있다면 댓글로 질문주세요!!

감사합니다!!~~

728x90

댓글