#include using namespace std; bool check(string s){ sort(s.begin(),s.end()); for(int i=1;i; vector val; vector> groups; vector sums; vector> ginv; vector uncall; void work(){ while(true){ // check vector know; for(int i=0;i s; for(int i=0;i<=99999;i++){ int v=i; string cur; for(int j=0;j<5;j++){ cur.push_back('0'+v%10); v/=10; } reverse(cur.begin(),cur.end()); if(check(cur)){s.push_back(cur);} } val.resize(s.size()); for(auto &nx : val){nx=-1;} ginv.resize(s.size()); for(auto &nx : ginv){nx.clear();} int done=0; while(true){ int qid; if(!uncall.empty()){ qid=uncall.back(); uncall.pop_back(); } else{ for(int i=0;i bk(32,0); vector> hb(30); for(auto &nx : hb){ cin >> nx.first >> nx.second; bk[nx.first*6+nx.second]=1; if(nx.first==5){cur++;} } if(hb[0].first==5){return 0;} val[qid]=cur-done; done=cur; work(); // generate vector> cgrp(32); for(int i=0;i app; for(auto &nx : cgrp[i]){ ginv[nx].push_back(groups.size()); app.insert(nx); } groups.push_back(app); sums.push_back(bk[i]); } } work(); } }