The start of the new academic year brought about the problem of accommodation students into dormitories. One of such dormitories has a a × b square meter wonder room. The caretaker wants to accommodate exactly n students there. But the law says that there must be at least 6 square meters per student in a room (that is, the room for n students must have the area of at least 6n square meters). The caretaker can enlarge any (possibly both) side of the room by an arbitrary positive integer of meters. Help him change the room so as alln students could live in it and the total area of the room was as small as possible.
The first line contains three space-separated integers n, a and b (1 ≤ n, a, b ≤ 109) — the number of students and the sizes of the room.
Print three integers s, a1 and b1 (a ≤ a1; b ≤ b1) — the final area of the room and its sizes. If there are multiple optimal solutions, print any of them.
3 3 5
18 3 6
2 4 4
16 4 4
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <map> #include <set> #include <queue> #include <stack> #include <bitset> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,l,h) for(int i=(l);i<=(h);++i) #define DWN(i,h,l) for(int i=(h);i>=(l);--i) #define CLR(vis,pos) memset(vis,pos,sizeof(vis)) #define PI acos(-1.0) #define INF 0x7FFFFFFF #define LINF 1000000000000000000LL #define eps 1e-8 typedef long long ll; int main() { ll n,a,b; cin>>n>>a>>b; n*=6; int flag=0; if(a*b>=n) { cout<<a*b<<endl; cout<<a<<" "<<b<<endl; return 0; } if(a>b) swap(a,b),flag=1; ll x; ll ansa=INF,ansb=INF; x=n/b; if(x*b<n) x++; ll ta,tb; FOR(i,a,x) { ta=i; tb=n/ta; if(ta*tb<n) tb++; if(ta>tb) break; //cout<<ansa*ansb<<" "<<ta*tb<<endl; ll sum1=ansa*ansb; ll sum2=ta*tb; if(ta>=a && tb>=b && ta*tb>=n && sum1>sum2) { ansa=ta,ansb=tb; //cout<<ta<<" "<<tb<<endl; } } if(flag && ansa<ansb) swap(ansa,ansb); cout<<ansa*ansb<<endl; cout<<ansa<<" "<<ansb<<endl; return 0; }