하루 1문제 챌린지/Silver1

백준 16206번 롤케이크(C++)🚩

그린푸딩 2024. 2. 13. 10:18
728x90
반응형

작은것부터, 10으로 먼저 나누어떨어지는것을 먼저 잘라야한다. 

19,20 이렇게 있으면 20부터 잘라야한다. 

반례를 찾는기 어렵다..

#include <iostream>
#include <vector>
#include<algorithm>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m; 
	cin >> n >> m;

	vector<int>arr;
	int s;
	for (int i = 0; i < n; i++) {
		cin >> s;
		arr.push_back(s);
	}

	sort(arr.begin(), arr.end());

	int cnt = 0;

	vector<int>roll;
	vector<bool>flag;
	flag.assign(n, 0);
	for (int i = 0; i < arr.size(); i++) {
		if (arr[i] % 10 == 0) {
			flag[i] = 1;
			roll.push_back(arr[i]);
		}
	}
	for (int i = 0; i < arr.size(); i++) {
		if (!flag[i])roll.push_back(arr[i]);
	}

	for (int i = 0; i <roll.size(); i++) {
		
		while (roll[i] > 10 && m>0) {
			cnt++; m--;
			roll[i] -= 10;
		}
		if (roll[i] == 10)cnt++;
		
	}

	cout << cnt;

}
728x90
반응형