int main() { int m,k; int i; long long last = 0; scanf("%d%d", &m, &k); for(i=1; i<=m; ++i) { heap[i-1].x = m-(i-1); heap[i-1].y = m; } while(k>0) { #ifdef DEBUG printheap(m); #endif if(last == (long long)heap[0].x*heap[0].y) { addnext(0, &m); relax(0, &m); continue; } printf("%lld\n", (long long)heap[0].x*heap[0].y); last = (long long)heap[0].x*heap[0].y; addnext(0, &m); relax(0, &m); k--; } return 0; }
int main(int argc,char *argv[]){ int i=0,j=0,turn=0,diff=3,swap=0,k,h=1,bload=0; char human[]="white",computer[]="black"; char ***b; char n=11; for(i=1;i<argc;i++){ /*Will make changes according to the commands given when the program was called. */ if(!(strcmp(argv[i],"-s"))) /*Enable swap rule. */ swap=1; else if(!(strcmp(argv[i],"-b"))){ /* Player plays as black. */ strcpy(human,"black"); strcpy(computer,"white"); } else if(!(strcmp(argv[i],"-n"))){ /*Changes the size if input is appropriate. */ /*Checks if there is something after "-n" in order not to go over the limits in case of wrong input.Also if the next word is a number. */ if((i+1>=argc)||((*argv[i+1]<'0')||(*argv[i+1]>'9'))){ fprintf(stderr,"Not given a new size after \"-n\".\nShutdown.\n"); return 0; } if((atoi(argv[i+1])>=4)&&(atoi(argv[i+1])<=26)) /*If the given size has an acceptable value. */ n=atoi(argv[++i]); else { fprintf(stderr,"Unacceptable size input(should be 4=<size=<26),shutdown.\n"); return 0; } } else if(!(strcmp(argv[i],"-d"))){ /*Change the difficulty,if given level is appropriate */ if((i+1>=argc)||((*argv[i+1]<'0')||(*argv[i+1]>'9'))){ /*Checks if there is something after "-d" in order not to go over the limits in case of wrong input. */ fprintf(stderr,"Not given a new difficulty level after \"-d\".\nShutdown.\n"); return 0; } if(atoi(argv[i+1])>0) /*If the new difficulty is over 1. */ diff=atoi(argv[++i]); else { fprintf(stderr,"Unacceptable difficulty level input(should be >0),shutdown.\n"); return 0; } } else /*If unknown parameter */ fprintf(stderr,"Unacceptable parameters given.Program keeps running.Feel free to \"quit\" and start again.\n"); } if(!(addnew(&b,n))) /*Beginning the game */ return -1; printf("Difficulty:%d\n",diff); printf("Size:%d\n",n); addnext(&b,++turn,n); /*Increasing turn and adding the turn's board. */ /*Checks if the first digit of the human string is 'w'(means that human="white")and giving the appropriate value to h. */ if (*human=='w')h=0; else h=1; /*Doing it so that for turn=0 the board is full of ' '.For turn=1 board is initially the same but changes before the next one is added. */ /*Loop ends when a player gives a "quit" command or the functions encounter an error. */ while(1){ if((turn+h)%2){ /*If its the player's/computer's turn print the appropriate message. */ printf("%s player(human) plays now.\n",human); } else{ printf("%s player(computer) plays now.\n",computer); } printf("Turn:%d\n",turn); printgame(n,b,turn); /*Print the game status after each move. */ do{ /*Calls stringread until it returns 2(play/cont) */ if(done(n,b,human,computer,turn-1,h)){ turn=-1; } printf(">"); k=stringread(&b,&turn,&diff,&n,human,computer,&swap,&h,&bload); if (k==0){ /*If it returns 0 the program has encountered an error and needs to be terminated. */ fprintf(stderr,"Fatal error.\n"); return -1; }else if(k==-1) break; }while(k !=2); if(k==-1) /*In that case player quit. */ break; if(!((turn+h)%2)){ /*If its the opponents turn calls the AI function,plays the move and prints the appropriate message */ if(AI(n,diff,turn,b,NULL,&i,&j,1,*computer,*human,-1200,swap)){ /*1 is returned if*/ swapit(b,n,turn); } else{ b[turn][i][j]=*computer; printf("Move played: %c%d\n",'A'+j,i+1); } } if(!(addnext(&b,++turn,n))) return -1; } for (i=0;i<turn;i++){ /*Free what needs to be freed. */ for(j=0;j<n;j++) free(b[i][j]); free (b[i]); } free(b); printf("Application shut down.\n"); return 1; }