QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#568006#8936. Team ArrangementduckindogWA 0ms3640kbC++231.2kb2024-09-16 14:56:382024-09-16 14:56:39

Judging History

This is the latest submission verdict.

  • [2024-09-16 14:56:39]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3640kb
  • [2024-09-16 14:56:38]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long

const int N = 60 + 10,
          MIN = -1'000'000'000'000'000'000;
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];

map<int, int> f;
map<int, int> value;

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];

  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);
    }
    
    value[mask] = MIN;
    int cnt = __builtin_popcount(mask);
    for (int j = l; j <= r; ++j)
      if (!(cnt % j)) value[mask] = max(value[mask], cnt / j * w[j]);
  }
  
  f[0] = 0;
  for (int mask = 1; mask < (1ll << n); ++mask) { 
    auto& ret = f[mask]; ret = MIN;
    for (int submask = mask; submask; submask = submask - 1 & mask)
      ret = max(ret, f[mask ^ submask] + value[submask]);
  }

  if (f[(1ll << n) - 1] == MIN) 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: 3640kb

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: 3532kb

input:

3
1 3
3 3
2 3
1 1 100

output:

100

result:

ok single line: '100'

Test #3:

score: -100
Wrong Answer
time: 0ms
memory: 3576kb

input:

2
1 1
2 2
1 1

output:

-999999999999999999

result:

wrong answer 1st lines differ - expected: 'impossible', found: '-999999999999999999'