Submission #975021

#TimeUsernameProblemLanguageResultExecution timeMemory
975021LucaIliePacking Biscuits (IOI20_biscuits)C++17
Compilation error
0 ms0 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; const int k = 60; long long x; long long biscuits[k]; long long sum[k][k], mask[k][k]; vector<int> ind[k]; long long solutions; vector<int> sol; void countSolutions( int b, long long s ) { solutions++; //for ( int i: sol ) // printf( "%d ", i ); //printf( "\n" );#include "biscuits.h" #include <bits/stdc++.h> using namespace std; const int k = 60; long long x; long long biscuits[k]; long long sum[k][k], mask[k][k]; vector<int> ind[k]; long long solutions; vector<int> sol; void countSolutions( int b, long long s ) { solutions++; //for ( int i: sol ) // printf( "%d ", i ); //printf( "\n" ); for ( int i: ind[b] ) { long long cs = ((s / 2 + mask[b][i]) >> (i - b)) + sum[b][i]; // printf( "%d %d %d\n", b, i, cs ); if ( cs >= x ) { sol.push_back( i ); countSolutions( i + 1, cs - x ); sol.pop_back(); } else break; } } int p; bool cmp( int p1, int p2 ) { long long r1 = ((mask[p][p1] >> (p1 - p)) + sum[p][p1] - x) >> p2, r2 = ((mask[p][p2] >> (p2 - p)) + sum[p][p2] - x) >> p1; return (r1 >> p2) > (r2 >> p1); } long long count_tastiness( long long X, vector <long long> a ) { long long s; x = X; a.resize( k ); s = 0; for ( int b = 0; b < k; b++ ) { a[b] += s; if ( a[b] > x ) { s = a[b] - x; a[b] = x + s % 2; s /= 2; } else s = 0; biscuits[b] = a[b]; } for ( int i = 0; i < k; i++ ) { sum[i][i] = biscuits[i]; for ( int j = i + 1; j < k; j++ ) { mask[i][j] = mask[i][j - 1] + (((long long)sum[i][j - 1] % 2) << (j - i - 1)); sum[i][j] = sum[i][j - 1] / 2 + biscuits[j]; //printf( "%d %d: %d %d\n", i, j, sum[i][j], mask[i][j] ); } } for ( int b = 0; b < k; b++ ) { ind[b].clear(); for ( int i = b; i < k; i++ ) ind[b].push_back( i ); p = b; sort( ind[b].begin(), ind[b].end(), cmp ); } solutions = 0; countSolutions( 0, 0 ); return solutions; } for ( int i: ind[b] ) { long long cs = ((s / 2 + mask[b][i]) >> (i - b)) + sum[b][i]; // printf( "%d %d %d\n", b, i, cs ); if ( cs >= x ) { sol.push_back( i ); countSolutions( i + 1, cs - x ); sol.pop_back(); } else break; } } int p; bool cmp( int p1, int p2 ) { long long r1 = ((mask[p][p1] >> (p1 - p)) + sum[p][p1] - x) >> p2, r2 = ((mask[p][p2] >> (p2 - p)) + sum[p][p2] - x) >> p1; return (r1 >> p2) > (r2 >> p1); } long long count_tastiness( long long X, vector <long long> a ) { long long s; x = X; a.resize( k ); s = 0; for ( int b = 0; b < k; b++ ) { a[b] += s; if ( a[b] > x ) { s = a[b] - x; a[b] = x + s % 2; s /= 2; } else s = 0; biscuits[b] = a[b]; } for ( int i = 0; i < k; i++ ) { sum[i][i] = biscuits[i]; for ( int j = i + 1; j < k; j++ ) { mask[i][j] = mask[i][j - 1] + (((long long)sum[i][j - 1] % 2) << (j - i - 1)); sum[i][j] = sum[i][j - 1] / 2 + biscuits[j]; //printf( "%d %d: %d %d\n", i, j, sum[i][j], mask[i][j] ); } } for ( int b = 0; b < k; b++ ) { ind[b].clear(); for ( int i = b; i < k; i++ ) ind[b].push_back( i ); p = b; sort( ind[b].begin(), ind[b].end(), cmp ); } solutions = 0; countSolutions( 0, 0 ); return solutions; }

Compilation message (stderr)

biscuits.cpp: In function 'void countSolutions(int, long long int)':
biscuits.cpp:32:43: error: a function-definition is not allowed here before '{' token
   32 | void countSolutions( int b, long long s ) {
      |                                           ^
biscuits.cpp:52:28: error: a function-definition is not allowed here before '{' token
   52 | bool cmp( int p1, int p2 ) {
      |                            ^
biscuits.cpp:57:64: error: a function-definition is not allowed here before '{' token
   57 | long long count_tastiness( long long X, vector <long long> a ) {
      |                                                                ^
biscuits.cpp:26:11: warning: unused variable 'biscuits' [-Wunused-variable]
   26 | long long biscuits[k];
      |           ^~~~~~~~
biscuits.cpp:29:11: warning: unused variable 'solutions' [-Wunused-variable]
   29 | long long solutions;
      |           ^~~~~~~~~
biscuits.cpp:51:5: warning: unused variable 'p' [-Wunused-variable]
   51 | int p;
      |     ^