답안 #889551

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
889551 2023-12-20T02:02:22 Z thunopro Cookies (JOI23_cookies) C++14
13 / 100
53 ms 1172 KB
#include<bits/stdc++.h>
using namespace std ;
#define maxn 200009 
#define ll long long
#define fi first 
#define se second 
#define pb push_back 
#define left id<<1
#define right id<<1|1 
#define re exit(0); 

const int mod = 1e9+7 ; 
const int INF = 1e9 ; 
const int LOG = 18 ; 

typedef vector<int> vi ; 
typedef vector<ll> vl ; 
typedef pair<int,int> pii ; 
typedef vector<pii> vii ; 
typedef pair<ll,ll> pll ;  

void add ( int &a , int b ) 
{
	a += b ; 
	if ( a < 0 ) a += mod ; 
	if ( a >= mod ) a -= mod ; 
}

template < typename T > void chkmin (T &a , T b) { if (a>b) a=b ;} 
template < typename T > void chkmax (T &a , T b) { if (a<b) a=b ;}

void rf () 
{
	freopen ("bai1.inp","r",stdin) ; 
//	freopen ("bai1.out","w",stdout) ; 
}

int _pow ( int a , int n ) 
{
	if ( n == 0 ) return 1 ; 
	int res = _pow(a,n/2) ;
	if ( n % 2 ) return (1ll*res*res%mod*a%mod) ; 
	else return 1ll*res*res%mod ; 
}
int n , a [maxn] ; 
int m , b [maxn] ;

int is_sub ; 
void check_sub () 
{
	bool ok = true ; 
	for ( int i = 1 ; i <= n ; i ++ ) if ( a [i] != 1 ) ok = false ; 
	if ( ok == true ) 
	{
		is_sub = 1 ;
		return ; 
	}
	if ( m == 1 ) 
	{
		is_sub = 2 ;
		return ; 
	}
}

void sub1 () 
{
	const int N = 2e4+9 ; 
	int dp [N] , trace [N]; 
	memset ( dp , 0x3f , sizeof dp ) ;
	dp [0] = 0 ; 
	for ( int i = 1 ; i <= n ; i ++ ) 
	{
		for ( int j = 1 ; j <= m ; j ++ ) 
		{
			if ( i >= b[j] ) 
			{
				if ( dp [i] > dp [i-b[j]] + 1 ) 
				{
					dp [i] = dp [i-b[j]] + 1 ;
					trace [i] = b [j] ;
				}
			}
		}
	}
	if ( dp [n] > INF ) 
	{
		cout << -1  ; re
	}
	vector<vi> res ; 
	int x = n ; 
	int num = 0 ; 
	while ( x ) 
	{
		vi t ; 
		t . pb (trace[x]) ; 
		for ( int i = 1 ; i <= trace [x] ; i ++ ) t . pb (++num) ; 
		res.pb(t) ; 
		x -= trace [x] ; 
	}
	cout << res.size () << "\n" ; 
	for ( auto x : res ) 
	{
		for ( auto y : x ) cout << y << " " ; 
		cout << "\n" ; 
	}
} 


void sub2 () 
{
	pii c [n+10] ; 
	int sum = 0 ; 
	for ( int i = 1 ; i <= n ; i ++ ) c [i] = {a[i],i} , sum += a [i] ;
	if ( sum % b [1] ) 
	{
		cout << - 1 ; re
	}
	int TIME = sum / b [1] ;
	vector <vi> res ; 
	while ( TIME -- ) 
	{
		sort (c+1,c+n+1,greater<pii>()) ;
		vi ans ; 
		ans . pb (b[1]) ;  
		for ( int i = 1 ; i <= b[1] ; i ++ ) 
		{
			if ( c [i].fi == 0 ) 
			{
				cout << - 1 ; re 
			}
			c [i].fi -- ; 
			ans . pb (c[i].se) ; 
		}
		res.pb (ans) ; 
	}
	cout << res.size () << "\n" ;
	for ( auto x : res ) 
	{
		for ( auto y : x ) cout << y << " " ; 
		cout << "\n" ; 
	}
}
int main () 
{
	ios_base::sync_with_stdio(0) ; 
	cin.tie(0) ; cout.tie(0) ; 
//	rf () ; 
	cin >> n ; 
	for ( int i = 1 ; i <= n ; i ++ ) cin >> a [i] ; 
	cin >> m ; 
	for ( int i = 1 ; i <= m ; i ++ ) cin >> b [i] ; 
	
	check_sub () ; 

	if ( is_sub == 1 ) sub1 () ; 
	else if ( is_sub == 2 ) sub2 () ; 
}

Compilation message

cookies.cpp: In function 'void rf()':
cookies.cpp:34:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |  freopen ("bai1.inp","r",stdin) ;
      |  ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 0 ms 604 KB Output is correct
13 Correct 1 ms 604 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 1 ms 600 KB Output is correct
16 Correct 1 ms 604 KB Output is correct
17 Correct 0 ms 604 KB Output is correct
18 Correct 0 ms 600 KB Output is correct
19 Correct 0 ms 604 KB Output is correct
20 Correct 0 ms 604 KB Output is correct
21 Correct 0 ms 604 KB Output is correct
22 Correct 1 ms 600 KB Output is correct
23 Correct 1 ms 604 KB Output is correct
24 Correct 0 ms 604 KB Output is correct
25 Correct 0 ms 604 KB Output is correct
26 Correct 0 ms 604 KB Output is correct
27 Correct 0 ms 604 KB Output is correct
28 Correct 0 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 604 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 1 ms 464 KB Output is correct
5 Correct 1 ms 604 KB Output is correct
6 Correct 1 ms 600 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 464 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 4 ms 1172 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 464 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 552 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 2 ms 692 KB Output is correct
19 Correct 53 ms 852 KB Output is correct
20 Correct 3 ms 600 KB Output is correct
21 Correct 2 ms 800 KB Output is correct
22 Correct 2 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 468 KB Output is correct
8 Correct 0 ms 604 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 0 ms 604 KB Output is correct
13 Correct 1 ms 604 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 1 ms 600 KB Output is correct
16 Correct 1 ms 604 KB Output is correct
17 Correct 0 ms 604 KB Output is correct
18 Correct 0 ms 600 KB Output is correct
19 Correct 0 ms 604 KB Output is correct
20 Correct 0 ms 604 KB Output is correct
21 Correct 0 ms 604 KB Output is correct
22 Correct 1 ms 600 KB Output is correct
23 Correct 1 ms 604 KB Output is correct
24 Correct 0 ms 604 KB Output is correct
25 Correct 0 ms 604 KB Output is correct
26 Correct 0 ms 604 KB Output is correct
27 Correct 0 ms 604 KB Output is correct
28 Correct 0 ms 604 KB Output is correct
29 Correct 0 ms 604 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 1 ms 604 KB Output is correct
32 Correct 0 ms 604 KB Output is correct
33 Correct 0 ms 604 KB Output is correct
34 Correct 0 ms 604 KB Output is correct
35 Correct 0 ms 468 KB Output is correct
36 Correct 0 ms 604 KB Output is correct
37 Correct 0 ms 348 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 0 ms 348 KB Output is correct
40 Correct 0 ms 348 KB Output is correct
41 Correct 0 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
44 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 0 ms 604 KB Output is correct
13 Correct 1 ms 604 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 1 ms 600 KB Output is correct
16 Correct 1 ms 604 KB Output is correct
17 Correct 0 ms 604 KB Output is correct
18 Correct 0 ms 600 KB Output is correct
19 Correct 0 ms 604 KB Output is correct
20 Correct 0 ms 604 KB Output is correct
21 Correct 0 ms 604 KB Output is correct
22 Correct 1 ms 600 KB Output is correct
23 Correct 1 ms 604 KB Output is correct
24 Correct 0 ms 604 KB Output is correct
25 Correct 0 ms 604 KB Output is correct
26 Correct 0 ms 604 KB Output is correct
27 Correct 0 ms 604 KB Output is correct
28 Correct 0 ms 604 KB Output is correct
29 Correct 0 ms 604 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 1 ms 604 KB Output is correct
32 Correct 0 ms 604 KB Output is correct
33 Correct 0 ms 604 KB Output is correct
34 Correct 0 ms 604 KB Output is correct
35 Correct 0 ms 468 KB Output is correct
36 Correct 0 ms 604 KB Output is correct
37 Correct 0 ms 348 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 0 ms 348 KB Output is correct
40 Correct 0 ms 348 KB Output is correct
41 Correct 0 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
44 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 0 ms 604 KB Output is correct
13 Correct 1 ms 604 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 1 ms 600 KB Output is correct
16 Correct 1 ms 604 KB Output is correct
17 Correct 0 ms 604 KB Output is correct
18 Correct 0 ms 600 KB Output is correct
19 Correct 0 ms 604 KB Output is correct
20 Correct 0 ms 604 KB Output is correct
21 Correct 0 ms 604 KB Output is correct
22 Correct 1 ms 600 KB Output is correct
23 Correct 1 ms 604 KB Output is correct
24 Correct 0 ms 604 KB Output is correct
25 Correct 0 ms 604 KB Output is correct
26 Correct 0 ms 604 KB Output is correct
27 Correct 0 ms 604 KB Output is correct
28 Correct 0 ms 604 KB Output is correct
29 Correct 0 ms 344 KB Output is correct
30 Correct 1 ms 604 KB Output is correct
31 Correct 0 ms 468 KB Output is correct
32 Correct 1 ms 464 KB Output is correct
33 Correct 1 ms 604 KB Output is correct
34 Correct 1 ms 600 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 1 ms 464 KB Output is correct
37 Correct 1 ms 600 KB Output is correct
38 Correct 4 ms 1172 KB Output is correct
39 Correct 0 ms 344 KB Output is correct
40 Correct 0 ms 464 KB Output is correct
41 Correct 1 ms 348 KB Output is correct
42 Correct 1 ms 552 KB Output is correct
43 Correct 0 ms 348 KB Output is correct
44 Correct 0 ms 348 KB Output is correct
45 Correct 1 ms 348 KB Output is correct
46 Correct 2 ms 692 KB Output is correct
47 Correct 53 ms 852 KB Output is correct
48 Correct 3 ms 600 KB Output is correct
49 Correct 2 ms 800 KB Output is correct
50 Correct 2 ms 348 KB Output is correct
51 Correct 0 ms 348 KB Output is correct
52 Correct 0 ms 604 KB Output is correct
53 Correct 0 ms 348 KB Output is correct
54 Correct 1 ms 604 KB Output is correct
55 Correct 0 ms 604 KB Output is correct
56 Correct 0 ms 604 KB Output is correct
57 Correct 0 ms 604 KB Output is correct
58 Correct 0 ms 468 KB Output is correct
59 Correct 0 ms 604 KB Output is correct
60 Correct 0 ms 348 KB Output is correct
61 Correct 0 ms 348 KB Output is correct
62 Correct 0 ms 348 KB Output is correct
63 Correct 0 ms 348 KB Output is correct
64 Correct 0 ms 348 KB Output is correct
65 Correct 0 ms 348 KB Output is correct
66 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
67 Halted 0 ms 0 KB -