Submission #46111502


Source Code Expand

#include<bits/stdc++.h>

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

using namespace std;

#define rep(i,n) for(int i=0;i<(n);i++)
using ll=long long;

/////////////////////////////////////////////////////////////////////////
// chmax, chmin
/////////////////////////////////////////////////////////////////////////
template<class T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;}
template<class T>bool chmin(T &a,const T &b){if(b<a){a=b;return true;}return false;}

/////////////////////////////////////////////////////////////////////////
// constants
/////////////////////////////////////////////////////////////////////////
int dx[]={1,0,-1,0},dy[]={0,1,0,-1};

/////////////////////////////////////////////////////////////////////////
// I/O
/////////////////////////////////////////////////////////////////////////
struct IOSetup{
	IOSetup(){
		cin.tie(0);
		ios::sync_with_stdio(0);
		cout<<fixed<<setprecision(12);
	}
} iosetup;

/////////////////////////////////////////////////////////////////////////
// vector
/////////////////////////////////////////////////////////////////////////
template<typename T>
ostream &operator<<(ostream &os,const vector<T>&v){
	for(int i=0;i<(int)v.size();i++) os<<v[i]<<(i+1==(int)v.size()?"":" ");
	return os;
}
template<typename T>
istream &operator>>(istream &is,vector<T>&v){
	for(T &x:v)is>>x;
	return is;
}

/////////////////////////////////////////////////////////////////////////
// debug
/////////////////////////////////////////////////////////////////////////
namespace myDebug
{
bool DEBUG_FLAG = true;

template<class Last>
void DEBUG(Last &&last)
{
	if (DEBUG_FLAG)
		cerr << last << endl;
}

template <class Head, class... Tail>
void DEBUG(Head &&head, Tail&&... tail)
{
	if (DEBUG_FLAG)
		cerr << head << ", ";
	DEBUG(forward<Tail>(tail)...);
}
}
using myDebug::DEBUG;

/////////////////////////////////////////////////////////////////////////
// Libraries from https://github.com/mugen1337/procon
/////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////
// solve 
/////////////////////////////////////////////////////////////////////////

int main()
{
	int N, K, P; cin >> N >> K >> P;
	vector<ll> C(N);
	vector<vector<ll>> A(N, vector<ll>(5, P));
	rep(i, N)
	{
		cin >> C[i];
		rep(j, K)
			cin >> A[i][j];
	}

	const int M = 7776;

	using State = tuple<int, int, int, int, int>;
	auto get = [](State s)
	{
		int a, b, c, d, e;
		tie(a, b, c, d, e) = s;
		int ret = 0;
		ret = a;
		ret = ret * 6 + b;
		ret = ret * 6 + c;
		ret = ret * 6 + d;
		ret = ret * 6 + e;
		return ret;
	};
	auto teg = [](int idx)
	{
		int a, b, c, d, e;
		e = idx % 6;
		idx /= 6;
		d = idx % 6;
		idx /= 6;
		c = idx % 6;
		idx /= 6;
		b = idx % 6;
		idx /= 6;
		a = idx % 6;
		return make_tuple(a, b, c, d, e);
	};

	const ll linf = 100000000001000;
	vector<vector<ll>> dp(N + 1, vector<ll>(M, linf));
	dp[0][0] = 0;

	auto add = [&P](int a, int b)
	{
		return min(a + b, P);
	};
	
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			chmin(dp[i + 1][j], dp[i][j]);

			auto [a, b, c, d, e] = teg(j);
			a = add(a, A[i][0]);
			b = add(b, A[i][1]);
			c = add(c, A[i][2]);
			d = add(d, A[i][3]);
			e = add(e, A[i][4]);
			auto idx = get(make_tuple(a, b, c, d, e));
			chmin(dp[i + 1][idx], dp[i][j] + C[i]);
		}
	}
	

	int ok = get(make_tuple(P, P, P, P, P));
	cout << (dp[N][ok] >= linf ? -1ll : dp[N][ok]) << endl;
	return 0;
}

Submission Info

Submission Time
Task E - Product Development
User mugen1337
Language C++ 20 (gcc 12.2)
Score 475
Code Size 3701 Byte
Status AC
Exec Time 8 ms
Memory 9544 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 2
AC × 46
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt
Case Name Status Exec Time Memory
example_00.txt AC 1 ms 3612 KiB
example_01.txt AC 1 ms 3772 KiB
test_00.txt AC 3 ms 5380 KiB
test_01.txt AC 3 ms 5720 KiB
test_02.txt AC 6 ms 8048 KiB
test_03.txt AC 7 ms 8916 KiB
test_04.txt AC 1 ms 3672 KiB
test_05.txt AC 2 ms 4960 KiB
test_06.txt AC 2 ms 4076 KiB
test_07.txt AC 4 ms 6192 KiB
test_08.txt AC 2 ms 4716 KiB
test_09.txt AC 2 ms 4632 KiB
test_10.txt AC 4 ms 6440 KiB
test_11.txt AC 6 ms 8844 KiB
test_12.txt AC 6 ms 7788 KiB
test_13.txt AC 5 ms 6928 KiB
test_14.txt AC 1 ms 3920 KiB
test_15.txt AC 4 ms 6688 KiB
test_16.txt AC 6 ms 7784 KiB
test_17.txt AC 1 ms 3872 KiB
test_18.txt AC 5 ms 6892 KiB
test_19.txt AC 3 ms 5220 KiB
test_20.txt AC 7 ms 8512 KiB
test_21.txt AC 1 ms 3688 KiB
test_22.txt AC 1 ms 3720 KiB
test_23.txt AC 6 ms 7676 KiB
test_24.txt AC 2 ms 4172 KiB
test_25.txt AC 2 ms 4608 KiB
test_26.txt AC 5 ms 6688 KiB
test_27.txt AC 3 ms 5724 KiB
test_28.txt AC 4 ms 6192 KiB
test_29.txt AC 6 ms 7768 KiB
test_30.txt AC 8 ms 9368 KiB
test_31.txt AC 7 ms 9540 KiB
test_32.txt AC 7 ms 9304 KiB
test_33.txt AC 7 ms 9384 KiB
test_34.txt AC 7 ms 9352 KiB
test_35.txt AC 8 ms 9372 KiB
test_36.txt AC 7 ms 9440 KiB
test_37.txt AC 8 ms 9440 KiB
test_38.txt AC 8 ms 9544 KiB
test_39.txt AC 8 ms 9412 KiB
test_40.txt AC 7 ms 9468 KiB
test_41.txt AC 8 ms 9444 KiB
test_42.txt AC 8 ms 9448 KiB
test_43.txt AC 8 ms 9332 KiB