QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#567957#8936. Team ArrangementduckindogRE 10ms20196kbC++231.2kb2024-09-16 14:48:212024-09-16 14:48:24

Judging History

This is the latest submission verdict.

  • [2024-09-16 14:48:24]
  • Judged
  • Verdict: RE
  • Time: 10ms
  • Memory: 20196kb
  • [2024-09-16 14:48:21]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long

const int N = 60 + 10;
int n;
struct Student {
  int l, r;
  friend istream& operator >> (istream& is, auto& rhs) { 
    return is >> rhs.l >> rhs.r;
  }
} s[N];
int w[N];

int f[1 << 20];
int value[1 << 20];

int32_t main() { 
  cin.tie(0)->sync_with_stdio(0);

  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> s[i];
  for (int i = 1; i <= n; ++i) cin >> w[i];

  memset(value, -15, sizeof value);
  for (int mask = 1; mask < (1ll << n); ++mask) { 
    int l = 1, r = n;
    for (int i = 1; i <= n; ++i) { 
      if (!(mask >> i - 1 & 1)) continue;
      l = max(l, s[i].l);
      r = min(r, s[i].r);
    }
    
    int cnt = __builtin_popcount(mask);
    for (int j = l; j <= r; ++j)
      if (!(cnt % j)) value[mask] = max(value[mask], cnt / j * w[j]);
  }
  
  memset(f, -15, sizeof f);
  f[0] = 0;
  for (int mask = 1; mask < (1ll << n); ++mask) { 
    auto& ret = f[mask];
    for (int submask = mask; submask; submask = submask - 1 & mask)
      ret = max(ret, f[mask ^ submask] + value[submask]);
  }

  if (f[(1ll << n) - 1] <= -1'000'000'000'000'000'000) cout << "impossible\n";
  else cout << f[(1ll << n) - 1] << "\n";
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 20040kb

input:

3
2 3
1 2
2 2
4 5 100

output:

9

result:

ok single line: '9'

Test #2:

score: 0
Accepted
time: 0ms
memory: 20040kb

input:

3
1 3
3 3
2 3
1 1 100

output:

100

result:

ok single line: '100'

Test #3:

score: 0
Accepted
time: 0ms
memory: 19996kb

input:

2
1 1
2 2
1 1

output:

impossible

result:

ok single line: 'impossible'

Test #4:

score: 0
Accepted
time: 2ms
memory: 20032kb

input:

3
2 3
1 2
2 2
-100 -200 100000

output:

-300

result:

ok single line: '-300'

Test #5:

score: 0
Accepted
time: 0ms
memory: 19936kb

input:

9
1 4
2 5
3 4
1 5
1 1
2 5
3 5
1 3
1 1
1 1 1 1 1 1 1 1 1

output:

6

result:

ok single line: '6'

Test #6:

score: 0
Accepted
time: 3ms
memory: 19880kb

input:

14
3 3
1 2
2 3
2 3
2 3
1 1
2 3
1 3
3 3
1 3
1 3
1 2
2 3
1 3
-9807452 -9610069 4156341 2862447 6969109 -7245265 -2653530 -5655094 6467527 -6872459 3971784 7312155 9766298 -2719573

output:

-16558567

result:

ok single line: '-16558567'

Test #7:

score: 0
Accepted
time: 7ms
memory: 20000kb

input:

14
1 2
1 4
2 3
3 5
4 5
2 5
2 4
2 4
1 2
3 4
1 5
2 4
1 1
4 5
-13763 -7354207 1096407 -9063321 -4824546 -6275546 1258145 -5272834 -8631107 3581157 2320771 -7714508 8446625 -6816167

output:

-2673021

result:

ok single line: '-2673021'

Test #8:

score: 0
Accepted
time: 10ms
memory: 20196kb

input:

14
2 3
4 4
1 7
3 6
3 4
1 1
1 4
4 7
3 7
1 7
2 3
6 6
1 1
3 6
2923142 1686477 640352 2848353 9202543 -4441381 4866381 -3610520 8124124 -1372894 1111310 -7538627 466143 9937961

output:

5939733

result:

ok single line: '5939733'

Test #9:

score: 0
Accepted
time: 3ms
memory: 19992kb

input:

14
1 7
1 2
8 8
1 1
7 8
6 9
7 8
1 4
6 9
3 3
1 1
3 7
5 8
4 8
-7139089 6365816 -9893288 5936146 -2803918 -4961415 1495365 -2564851 -2630365 -8608883 5813455 -4005459 -8844054 6703783

output:

impossible

result:

ok single line: 'impossible'

Test #10:

score: 0
Accepted
time: 7ms
memory: 19936kb

input:

14
6 13
3 7
2 13
6 8
4 5
12 13
3 10
4 11
2 14
3 4
5 13
10 14
10 14
3 12
-8599727 -1496394 855072 -7439122 -5170228 8009298 -250221 5841035 2949765 7166358 -3516548 -6851737 8173765 -917122

output:

impossible

result:

ok single line: 'impossible'

Test #11:

score: -100
Runtime Error

input:

60
21 34
13 34
48 49
31 42
5 6
16 30
1 25
35 37
3 14
3 32
25 54
2 41
24 44
27 52
26 55
8 35
31 47
41 42
4 35
53 59
13 19
11 51
36 48
5 59
40 44
28 50
5 51
37 53
50 60
14 50
22 58
20 50
20 21
5 20
19 55
5 45
19 35
7 29
5 53
25 33
19 51
37 41
13 29
12 24
13 40
10 22
1 5
22 32
14 42
11 41
16 60
35 43
3...

output:


result: