Submission #1192267

#TimeUsernameProblemLanguageResultExecution timeMemory
1192267ChuanChenBali Sculptures (APIO15_sculpture)C++20
21 / 100
1 ms328 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 2e9; int n, A, B; ll sv[105]; int dp[2005]; //dp[i] := usando [1; i], qtd minimo de grupos para o resultado seja um submask do prefixo que temos //dp[i] = inf <=> não consigo ll ans; bool isSubmask(int b, ll val){ return (ans>>b)==((ans>>b)|(val>>b)); } bool solve(int b){ for(int i = 1; i <= n; i++) dp[i] = inf; for(int i = 1; i <= n; i++){ for(int j = 0; j < i; j++){ //[1; i] = [1; j] U [j+1; i]; if(isSubmask(b, sv[i]-sv[j])) dp[i] = min(dp[i], dp[j]+1); } } if(dp[n] <= B) return true; return false; } int main(){ cin.tie(0)->sync_with_stdio(0); cin >> n >> A >> B; for(int i = 1; i <= n; i++){ int a; cin >> a; sv[i] = sv[i-1]+a; } for(int b = 40; b >= 0; b--){ if(!solve(b)){ ans+=(1ll<<b); } } cout << ans << '\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...