Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- #include <set>
- #include <map>
- #include <algorithm>
- using namespace std;
- typedef vector<int> DataList;
- static int test(const DataList &dat, int depth = 0);
- int main()
- {
- ifstream is("data.txt");
- int t;
- is >> t;
- ofstream os("solo_game_result.txt");
- for (int i = 0; i < t; ++i)
- {
- int n;
- is >> n;
- DataList dat(n);
- for (int j = 0; j < n; ++j)
- {
- is >> dat[j];
- }
- os << test(dat) << endl;
- }
- return 0;
- }
- void divide(int &i)
- {
- i /= 2;
- }
- void get(DataList &dat)
- {
- for (DataList::iterator i = dat.begin(); i != dat.end(); ++i)
- {
- while ((*i % 5 == 0) || (*i % 10 == 0))
- {
- i = dat.erase(i);
- if (i == dat.end())
- return;
- }
- }
- }
- int test(const DataList &dat, int depth)
- {
- DataList dat1 = dat, dat2 = dat;
- for_each(dat1.begin(), dat1.end(), divide);
- get(dat2);
- ++depth;
- if (dat2.empty())
- {
- return depth;
- }
- else if (dat2.size() == dat.size())
- {
- return test(dat1, depth);
- }
- else
- {
- i1 = test(dat1, depth), i2 = test(dat2, depth);
- return min(i1, i2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement