Click
Here to go back to the homepage.
Mancala Solution:
#include <bits/stdc++.h>
using namespace std;
#define MAX 2000
int main(){
// #ifndef TESTING
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
vector<int> memo[2001];
memo[1] = {1};
for(int i = 2; i <= MAX; i++){
copy(memo[i-1].begin(), memo[i-1].end(), back_inserter(memo[i]));
auto it = find(memo[i].begin(), memo[i].end(), 0);
for(auto ptr = memo[i].begin(); ptr < it; ptr++){
(*ptr)--;
}
if(it == memo[i].end()){
memo[i].push_back(distance(memo[i].begin(), it) + 1);
} else {
(*it) = distance(memo[i].begin(), it) + 1;
}
}
int cases;
cin >> cases;
for(int i = 1; i <= cases; i++){
int total;
cin.ignore(256,' ');
cin >> total;
cout << i << " " << memo[total].size() << endl;
bool lineEnd;
for(int index = 0; index < memo[total].size(); index++){
lineEnd = false;
cout << memo[total][index] << " ";
if(index > 2 && (index + 1) % 10 == 0){
cout << endl;
lineEnd = true;
}
}
if(!lineEnd){
cout << endl;
}
}
return 0;
}