vector<vector<int> > subsetsWithDup(const vector<int> &S) { vector<vector<int> > res; res.push_back(vector<int>{}); int sz = S.size(); if(sz == 0) { return res; } vector<int> num(S); sort(num.begin(), num.end()); int start=0, i=start; while(i<sz) { while(i+1<sz && num[i] == num[i+1]) { i++; } vector<vector<int> > nextRes(res); for(auto &r: nextRes) { vector<int> ele(r); for(int j=start; j<=i; j++) { ele.push_back(num[j]); res.push_back(ele); } } start = i+1; i=start; } return res; }
void menuCommand2() { int mx, my; FILE *file; if( SDL_GetMouseState(&mx, &my) &SDL_BUTTON_LMASK ) { if( (mx > MENU_X + 130) && (mx < (MENU_X + 510)) ) { // Main Menu if( HUD.menu == 1 ) { // New game if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { //endGame(); if(!Mix_PlayingMusic()) startMusic(); else if(!players[0].inGame) { Mix_HookMusicFinished(nextSong); Mix_FadeOutMusic(100); } startGame(MAX_PLAYERS); } // Resume else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { if(players[0].inGame) HUD.menu = 0; } // Save/Load else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { HUD.menu = 2; } // Options else if( (my > (MENU_Y + 285)) && (my < (MENU_Y + 355)) ) { HUD.menu = 3; } // Quit else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { exit(0); } } // Save/Load submenu else if( HUD.menu == 2 ) { // Save if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { fprintf(stderr,"Saving not yet implemented.\n"); } // Load else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { fprintf(stderr,"Loading not yet implemented.\n"); } // Main Menu else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 1; } } // Options submenu else if( HUD.menu == 3 ) { // Sound if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { HUD.menu = 4; } // Controls else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { HUD.menu = 5; } // HUD else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { HUD.menu = 6; } // Game else if( (my > (MENU_Y + 285)) && (my < (MENU_Y + 355)) ) { HUD.menu = 7; } // Main Menu else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 1; } } // Sound submenu else if( HUD.menu == 4 ) { // Volume sliders if( (mx > MENU_X + 350) && (mx < (MENU_X + 490)) ) { // Sound effects volume if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { audio.slide = 1; } // Music volume else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { audio.slide = 2; } } // Mute else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { audio.mute = 1-audio.mute; } // Options else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 3; // ADD save settings } } // ADD Controls submenu else if( HUD.menu == 5 ) { // if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { } // else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { } // else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { } // else if( (my > (MENU_Y + 285)) && (my < (MENU_Y + 355)) ) { } // Options else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 3; } } // HUD submenu else if( HUD.menu == 6 ) { // Alpha slider if( (mx > MENU_X + 350) && (mx < (MENU_X + 490)) ) { if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { aSlide = true; } } // Save /* else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { saveHUD(); } // Load else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { file = fopen("config/hud.txt","r"); if(file != NULL) loadHUD(file); else fprintf(stderr,"hud.txt failed to load\n"); } */ // Options else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 3; } } // Game submenu else if( HUD.menu == 7 ) { // Scroll sensitivity slider if( (mx > MENU_X + 350) && (mx < (MENU_X + 490)) ) { if( (my > (MENU_Y + 40)) && (my < (MENU_Y + 105)) ) { HUD.sSlide = true; } } // Tool tips on/off else if( (my > (MENU_Y + 122)) && (my < (MENU_Y + 190)) ) { HUD.ttips = 1 - HUD.ttips; } // Game res else if( (my > (MENU_Y + 205)) && (my < (MENU_Y + 275)) ) { if( (mx > (MENU_X + 350)) && (mx < (MENU_X + 490)) ) { nextRes(); } } // Options else if( (my > (MENU_Y + 365)) && (my < (MENU_Y + 435)) ) { HUD.menu = 3; } } } } }