Submission #714336

#TimeUsernameProblemLanguageResultExecution timeMemory
714336vjudge1Uplifting Excursion (BOI22_vault)C++17
5 / 100
5058 ms2380 KiB
#include<bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
int res[510000];
int main () {
  cin.tie(0)->sync_with_stdio(0);
  for(int i = 0;i<510000;i++)res[i]=-1e9;
  res[0]=0;
  long long m, l;
  cin >> m >> l;
  int a[2*m+1];
  for(int i = 0;i<=2*m;i++) {
    cin >> a[i];
  }
  if(l<0) {
    l=-l;
    reverse(a,a+2*m+1);
  }
  if(l>=510000) {
    cout << "impossible\n";
    return 0;
  }
  for(int i = m+1;i<=2*m;i++) {
    for(int cnt=1;cnt<=a[i];cnt++) {
      for(int j = 510000-1;j>=(i-m);j--) {
        res[j]=max(res[j], res[j-(i-m)]+1);
      }
    }
  }
  for(int i = 0;i<=m-1;i++) {
    for(int cnt=1;cnt<=a[i];cnt++) {
      for(int j = 0;j<510000;j++) {
        if((j-(i-m))<510000)res[j]=max(res[j], res[j-(i-m)]+1);
      }
    }
  }
  res[l]+=a[m];
  if(res[l]<0)cout<<"impossible\n";
  else cout << (res[l]) << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...