Submission #1052559

# Submission time Handle Problem Language Result Execution time Memory
1052559 2024-08-10T16:26:30 Z cjoa Detecting Molecules (IOI16_molecules) C++17
31 / 100
11 ms 65536 KB
#include "molecules.h"

#include <bits/stdc++.h>

using namespace std;

int L, U;
vector<int> W;

//                  i
//      0  1  2  3
// W = [6, 8, 8, 7]

const int MAXN = 10000;
const int MAXU = 10000;

bool cached[MAXN+1][MAXU+2];
bool memo[MAXN+1][MAXU+2];
char decision[MAXN+1][MAXN+1];
pair<int,int> parent[MAXN+1][MAXN+1];


// dp(i, espacio) = true si es posible utilizar las moleculas i hasta la ultima
//                  y que el espacio_ocupado se encuentra en el rango de [L, U]

bool dp( int i, int espacio_ocupado ) {
   if (espacio_ocupado > U)
      return false;

   if (i == (int) W.size()) {
      // ya no hay mas moleculas que tomar
      if (L <= espacio_ocupado and espacio_ocupado <= U)
         return true;
      else
         return false;
   }

   if (cached[i][espacio_ocupado])
      return memo[i][espacio_ocupado];

   bool res = false;

   // incluir la molecula i
   if (dp(i + 1, espacio_ocupado + W[i])) {
      decision[i][espacio_ocupado] = 'I';
      parent[i][espacio_ocupado] = {i+1, espacio_ocupado + W[i]};
      res = true;
   }
   
   // excluir la molecula i
   if (!res) {
      if ( dp(i + 1, espacio_ocupado) ) {
         decision[i][espacio_ocupado] = 'X';
         parent[i][espacio_ocupado] = {i+1, espacio_ocupado};
         res = true;
      }
   }

   cached[i][espacio_ocupado] = true;
   memo[i][espacio_ocupado] = res;

   return res;
}







std::vector<int> find_subset(int l, int u, std::vector<int> w) {
   W = w;
   L = l;
   U = u;

   bool can = dp(0, 0);
   if (!can)
      return {};

   vector<int> res;
   for (int i = 0, espacio_ocupado = 0; i < (int) W.size(); ) {
      if (decision[i][espacio_ocupado] == 'I')
         res.push_back(i);
      int nuevo_i, nuevo_esp;
      tie(nuevo_i, nuevo_esp) = parent[i][espacio_ocupado];
      i = nuevo_i;
      espacio_ocupado = nuevo_esp;
   }
   return res;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB OK (n = 1, answer = NO)
2 Correct 0 ms 2396 KB OK (n = 1, answer = NO)
3 Correct 0 ms 4444 KB OK (n = 1, answer = YES)
4 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
5 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
6 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
7 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
8 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
9 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
10 Correct 0 ms 4572 KB OK (n = 3, answer = YES)
11 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
12 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
13 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
14 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
15 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
16 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
17 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
18 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
19 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6592 KB OK (n = 12, answer = YES)
2 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
3 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
4 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
5 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
6 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
7 Correct 1 ms 6488 KB OK (n = 12, answer = YES)
8 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
9 Correct 1 ms 6492 KB OK (n = 6, answer = YES)
10 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
11 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
12 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
13 Correct 0 ms 2752 KB OK (n = 100, answer = NO)
14 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
15 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
16 Correct 2 ms 13144 KB OK (n = 100, answer = YES)
17 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB OK (n = 1, answer = NO)
2 Correct 0 ms 2396 KB OK (n = 1, answer = NO)
3 Correct 0 ms 4444 KB OK (n = 1, answer = YES)
4 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
5 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
6 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
7 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
8 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
9 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
10 Correct 0 ms 4572 KB OK (n = 3, answer = YES)
11 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
12 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
13 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
14 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
15 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
16 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
17 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
18 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
19 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
20 Correct 1 ms 6592 KB OK (n = 12, answer = YES)
21 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
22 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
23 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
24 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
25 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
26 Correct 1 ms 6488 KB OK (n = 12, answer = YES)
27 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
28 Correct 1 ms 6492 KB OK (n = 6, answer = YES)
29 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
30 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
31 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
32 Correct 0 ms 2752 KB OK (n = 100, answer = NO)
33 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
34 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
35 Correct 2 ms 13144 KB OK (n = 100, answer = YES)
36 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
37 Correct 1 ms 6492 KB OK (n = 28, answer = YES)
38 Correct 1 ms 6748 KB OK (n = 27, answer = YES)
39 Correct 2 ms 13148 KB OK (n = 90, answer = YES)
40 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
41 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
42 Correct 1 ms 6492 KB OK (n = 10, answer = YES)
43 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
44 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
45 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
46 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
47 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
48 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
49 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
50 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
51 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
52 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
53 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
54 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB OK (n = 1, answer = NO)
2 Correct 0 ms 2396 KB OK (n = 1, answer = NO)
3 Correct 0 ms 4444 KB OK (n = 1, answer = YES)
4 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
5 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
6 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
7 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
8 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
9 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
10 Correct 0 ms 4572 KB OK (n = 3, answer = YES)
11 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
12 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
13 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
14 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
15 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
16 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
17 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
18 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
19 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
20 Correct 1 ms 6592 KB OK (n = 12, answer = YES)
21 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
22 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
23 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
24 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
25 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
26 Correct 1 ms 6488 KB OK (n = 12, answer = YES)
27 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
28 Correct 1 ms 6492 KB OK (n = 6, answer = YES)
29 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
30 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
31 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
32 Correct 0 ms 2752 KB OK (n = 100, answer = NO)
33 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
34 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
35 Correct 2 ms 13144 KB OK (n = 100, answer = YES)
36 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
37 Correct 1 ms 6492 KB OK (n = 28, answer = YES)
38 Correct 1 ms 6748 KB OK (n = 27, answer = YES)
39 Correct 2 ms 13148 KB OK (n = 90, answer = YES)
40 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
41 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
42 Correct 1 ms 6492 KB OK (n = 10, answer = YES)
43 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
44 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
45 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
46 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
47 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
48 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
49 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
50 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
51 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
52 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
53 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
54 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
55 Runtime error 11 ms 65536 KB Execution killed with signal 9
56 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB OK (n = 1, answer = NO)
2 Correct 0 ms 2396 KB OK (n = 1, answer = NO)
3 Correct 0 ms 4444 KB OK (n = 1, answer = YES)
4 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
5 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
6 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
7 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
8 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
9 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
10 Correct 0 ms 4572 KB OK (n = 3, answer = YES)
11 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
12 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
13 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
14 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
15 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
16 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
17 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
18 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
19 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
20 Correct 1 ms 6592 KB OK (n = 12, answer = YES)
21 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
22 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
23 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
24 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
25 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
26 Correct 1 ms 6488 KB OK (n = 12, answer = YES)
27 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
28 Correct 1 ms 6492 KB OK (n = 6, answer = YES)
29 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
30 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
31 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
32 Correct 0 ms 2752 KB OK (n = 100, answer = NO)
33 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
34 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
35 Correct 2 ms 13144 KB OK (n = 100, answer = YES)
36 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
37 Correct 1 ms 6492 KB OK (n = 28, answer = YES)
38 Correct 1 ms 6748 KB OK (n = 27, answer = YES)
39 Correct 2 ms 13148 KB OK (n = 90, answer = YES)
40 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
41 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
42 Correct 1 ms 6492 KB OK (n = 10, answer = YES)
43 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
44 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
45 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
46 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
47 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
48 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
49 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
50 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
51 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
52 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
53 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
54 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
55 Runtime error 11 ms 65536 KB Execution killed with signal 9
56 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB OK (n = 1, answer = NO)
2 Correct 0 ms 2396 KB OK (n = 1, answer = NO)
3 Correct 0 ms 4444 KB OK (n = 1, answer = YES)
4 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
5 Correct 0 ms 4444 KB OK (n = 2, answer = YES)
6 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
7 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
8 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
9 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
10 Correct 0 ms 4572 KB OK (n = 3, answer = YES)
11 Correct 1 ms 4444 KB OK (n = 3, answer = YES)
12 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
13 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
14 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
15 Correct 0 ms 4444 KB OK (n = 3, answer = YES)
16 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
17 Correct 0 ms 2396 KB OK (n = 3, answer = NO)
18 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
19 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
20 Correct 1 ms 6592 KB OK (n = 12, answer = YES)
21 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
22 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
23 Correct 0 ms 2396 KB OK (n = 12, answer = NO)
24 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
25 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
26 Correct 1 ms 6488 KB OK (n = 12, answer = YES)
27 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
28 Correct 1 ms 6492 KB OK (n = 6, answer = YES)
29 Correct 1 ms 6492 KB OK (n = 12, answer = YES)
30 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
31 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
32 Correct 0 ms 2752 KB OK (n = 100, answer = NO)
33 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
34 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
35 Correct 2 ms 13144 KB OK (n = 100, answer = YES)
36 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
37 Correct 1 ms 6492 KB OK (n = 28, answer = YES)
38 Correct 1 ms 6748 KB OK (n = 27, answer = YES)
39 Correct 2 ms 13148 KB OK (n = 90, answer = YES)
40 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
41 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
42 Correct 1 ms 6492 KB OK (n = 10, answer = YES)
43 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
44 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
45 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
46 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
47 Correct 1 ms 2908 KB OK (n = 100, answer = NO)
48 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
49 Correct 0 ms 2908 KB OK (n = 100, answer = NO)
50 Correct 2 ms 13148 KB OK (n = 100, answer = YES)
51 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
52 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
53 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
54 Correct 1 ms 13148 KB OK (n = 100, answer = YES)
55 Runtime error 11 ms 65536 KB Execution killed with signal 9
56 Halted 0 ms 0 KB -