File tree Expand file tree Collapse file tree 1 file changed +16
-19
lines changed
Expand file tree Collapse file tree 1 file changed +16
-19
lines changed Original file line number Diff line number Diff line change @@ -32,31 +32,28 @@ typedef long long ll;
3232#define fke (b ) for (int k=0 ; k < ((int )(b)); k++) // k -> [0, b]
3333#define fle (b ) for (int l=0 ; l <= ((int )(b)); l++) // l -> [0, b]
3434#define pb push_back
35-
35+ #define inf 1000000000
36+
3637class BallsSeparating {
3738
3839 public:
39- int minOperations (vector < int > red, vector < int > green, vector < int > blue ){
40- int n = red .size ();
40+ int minOperations (vi r, vi g, vi b ){
41+ int n = r .size ();
4142 if (n < 3 ) return -1 ;
42- int sum = 0 , s = 0 ;
43- fi (n) sum += red[i] + green[i] + blue[i];
44-
45- fi (n) fj (n) fk (n) {
46- if (i == j || j == k || k == i) continue ;
47- vi v;
48- v.pb (red[i]);
49- v.pb (green[j]);
50- v.pb (blue[k]);
51-
52- for (int t = 0 ; t < n; t++){
53- if (t == i || t == j || t == k) continue ;
54- int mx = max (red[t], max (blue[t], green[t]));
55- v.pb (mx);
43+ int dp[10 ];
44+ fj (10 ) dp[j] = inf;
45+ dp[0 ] = 0 ;
46+ fi (n){
47+ int t[10 ];
48+ fk (10 ) t[k] = inf;
49+ fj (8 ){
50+ t[j|1 ] = min (t[j|1 ], dp[j] + b[i] + g[i]);
51+ t[j|2 ] = min (t[j|2 ], dp[j] + r[i] + b[i]);
52+ t[j|4 ] = min (t[j|4 ], dp[j] + g[i] + r[i]);
5653 }
57- s = max (s, accumulate (v. begin (), v. end (), 0 )) ;
54+ fk ( 8 ) dp[k] = t[k] ;
5855 }
59- return sum - s ;
56+ return dp[ 7 ] ;
6057 }
6158
6259// BEGIN CUT HERE
You can’t perform that action at this time.
0 commit comments