BOJ 25089 3D Printing
sorohue가 PS하는 블로그
BOJ 25089 3D Printing
문제 링크입니다.
문제 요약
CMYK의 4종류 잉크를 쓰는 프린터 3대가 있습니다. 각 프린터에서 네 잉크를 각각 같은 양 사용하고자 합니다. 각 프린터에서 사용한 잉크 양의 합은 정확히 $1\,000\,000$이여야 합니다. 출력 가능한 잉크 배합을 하나 찾으세요.
풀이
각 색을 세 프린터 중 가장 적은 쪽에 들어있는 양만큼 쓸 수 있음은 자연스럽습니다. 네 잉크를 최대한으로 썼을 때 합이 $1\,000\,000$이 안 되면 불가능한 거고, $1\,000\,000$ 이상이 되면 적당히 덜어내서 딱 $1\,000\,000$으로 맞춰 줍시다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
void solve(){
int a[3][4];
for(int i = 0; i < 3; i++) for(int j = 0; j < 4; j++) cin >> a[i][j], a[0][j] = min(a[0][j], a[i][j]);
int sum = 0;
for(int i = 0; i < 4; i++){sum += a[0][i]; if(sum > 1000000) a[0][i] -= sum-1000000, sum = 1000000;}
if(sum < 1000000) cout << "IMPOSSIBLE\n";
else cout << a[0][0] << ' ' << a[0][1] << ' ' << a[0][2] << ' ' << a[0][3] << '\n';
}
int main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);
int T; cin >> T; for(int tc = 1; tc <= T; tc++){
cout << "Case #" << tc << ": "; solve();
}
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.