# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
27205 | TAMREF | Min-cost GCD (GA9_mcg) | C++11 | 786 ms | 32768 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define va first
#define vb second
#define mp make_pair
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
map<pll,int> m;
pll x[100005];
ll s[100005], t[100005];
int idx;
int rec(pll p){
if(!p.va||!p.vb) return 0;
if(m[p]) return m[p];
ll x=p.va,y=p.vb;
return m[p]=min(rec(mp(y,x%y))+s[idx],rec(x>=y?mp(x-y,y):mp(x,y-x))+t[idx]);
}
int main(){
int T; scanf("%d",&T);
for(idx=0;idx<T;idx++){
scanf("%lld%lld%lld%lld",&x[idx].va,&x[idx].vb,&s[idx],&t[idx]);
}
if(*min_element(s,s+T)==*max_element(s,s+T) && *min_element(t,t+T)==*max_element(t,t+T))
for(idx=0;idx<T;idx++) printf("%d\n",rec(x[idx]));
else{
for(idx=0;idx<T;idx++){
m.clear();
printf("%d\n",rec(x[idx]));
}
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |