Submission #860581

# Submission time Handle Problem Language Result Execution time Memory
860581 2023-10-13T11:02:16 Z mychecksedad Packing Biscuits (IOI20_biscuits) C++17
42 / 100
1000 ms 12752 KB
// #include<biscuits.h>
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
const int N = 1e6+100, M = 1e5+10, K = 22;

ll count_tastiness(ll x, vector<ll> a){
	for(int i = 0; i < 60; ++i) a.pb(0);
	int n = a.size();

	for(int i = 0; i < n - 1; ++i){
		if(a[i] >= x){
			a[i + 1] += (a[i]-x)>>1;
			a[i] -= ((a[i]-x)>>1)*2;
		}
	}

	ll ans = 1;
	vector<array<ll, 2>> p;
	p.pb({0ll, 1ll});

	for(int i = 0; i < n; ++i){
		vector<array<ll, 2>> pp, pp2;
		for(auto z: p){
			ll y = z[0];
			if(pp.empty() || pp.back()[0] != ((y+a[i])>>1)){
				pp.pb({(y+a[i])>>1, z[1]});
			}else if(pp.back()[0] == ((y+a[i])>>1)){
				pp.back()[1] += z[1];
			}

			if((y+a[i]-x) >= 0){
				if(pp2.empty() || pp2.back()[0] != ((y+a[i]-x)>>1)){
					pp2.pb({(y+a[i]-x)>>1, z[1]});
				}else if(pp2.back()[0] == ((y+a[i]-x)>>1)){
					pp2.back()[1] += z[1];
				}
				ans += z[1];

				// pp[(y+a[i]-x)>>1] += z.second;
				// ans += z.second;
			}
		}
		p.clear();
		int po = 0;
		for(int j = 0; j < pp.size(); ++j){
			while(po < pp2.size() && pp2[po][0] < pp[j][0]){
				p.pb(pp2[po]);
				++po;
			}
			p.pb(pp[j]);
			if(po < pp2.size() && pp2[po][0] == p.back()[0]){
				p.back()[1] += pp2[po][1];
				++po;
			}
		}
		// for(auto f: p) cout << f << ' ';
		// en;
	// cout << ans << '\n';
	}
	// cout << s << ' ';
	// cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n";
	return ans;
}

Compilation message

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:51:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |   for(int j = 0; j < pp.size(); ++j){
      |                  ~~^~~~~~~~~~~
biscuits.cpp:52:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |    while(po < pp2.size() && pp2[po][0] < pp[j][0]){
      |          ~~~^~~~~~~~~~~~
biscuits.cpp:57:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |    if(po < pp2.size() && pp2[po][0] == p.back()[0]){
      |       ~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 436 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 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 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 444 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 860 KB Output is correct
2 Correct 12 ms 952 KB Output is correct
3 Correct 19 ms 896 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 43 ms 1080 KB Output is correct
9 Correct 30 ms 1076 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 7 ms 540 KB Output is correct
13 Correct 41 ms 1108 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1069 ms 12752 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 436 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 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 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 444 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 5 ms 860 KB Output is correct
25 Correct 12 ms 952 KB Output is correct
26 Correct 19 ms 896 KB Output is correct
27 Correct 1 ms 344 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 1 ms 348 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 43 ms 1080 KB Output is correct
32 Correct 30 ms 1076 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 7 ms 540 KB Output is correct
36 Correct 41 ms 1108 KB Output is correct
37 Execution timed out 1069 ms 12752 KB Time limit exceeded
38 Halted 0 ms 0 KB -