Submission #499010

#TimeUsernameProblemLanguageResultExecution timeMemory
499010amukkalirBali Sculptures (APIO15_sculpture)C++17
21 / 100
18 ms31876 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll; 

const ll INF = 1e15; 
const int nax = 2000; 
ll a, b, n; 
ll y[nax+5]; 
ll p[nax+5]; 
ll dp[nax+5][nax+5]; 

bool ok (int x) {
	return a <= x && x <= b; 
}

ll f(int idx, int grup) {
	if(idx == n+1) return ok(grup) ? 0 : 1e5; 

	ll &res = dp[idx][grup]; 
	if(~res) return res; 

	res = INF; 

	for(int i=idx; i<=n; i++) {
		res = min(res, (p[i] - p[idx-1]) | f(i+1, grup+1)); 
	}
	//cerr << idx << " " << grup << " " << res << endl; 
	return res; 
}

ll rec(int idx, ll sum, ll val, int grup) {
	if(idx==n) return (a <= grup && grup <= b) ? (val | (sum + y[n])) : INF; 
	return min(rec(idx+1, sum+y[idx], val, grup), rec(idx+1, 0, val | (sum+y[idx]), grup+1)); 
}

ll solve1 () {
	memset(dp, -1, sizeof (dp)); 
	return f(1,0); 
}

ll solve2(){
	return rec(1, 0, 0, 1); 
}

mt19937 mt(time(nullptr)); 

ll rand (ll x) {
	unsigned long long m = mt(); 
	return m % x; 
}

int main() {
	scanf("%lld %lld %lld", &n, &a, &b); 

	for(int i=1; i<=n; i++) {
		scanf("%lld", &y[i]); 
		p[i] = y[i] + p[i-1]; 
	}
	
	solve1(); 

	printf("%lld", f(1, 0)); 
}

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:53:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |  scanf("%lld %lld %lld", &n, &a, &b);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sculpture.cpp:56:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |   scanf("%lld", &y[i]);
      |   ~~~~~^~~~~~~~~~~~~~~
#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...