#include #include #include #include using namespace std; const int MAX_N = 1000; const int MAX_M = 3; int matrice[MAX_N][MAX_M]; int matrice2[MAX_N][MAX_M]; int row; int k; int main() { ifstream fin("input.txt"); assert( fin ); int i,j,temp1,temp2,res; int posizioni[16]; int massimi[4]; res=0; for(i=0;i<4;i++) massimi[i]=-20000; fin >> row >> k; for(i=0;i>matrice[i][j]; ofstream fout("output.txt"); assert( fout ); while(k>0) { for(i=0;imassimi[0]) { massimi[0]=temp1; posizioni[0]=i; posizioni[1]=j; posizioni[2]=i; posizioni[3]=j+1; } } matrice2[posizioni[0]][posizioni[1]]=-20000; matrice2[posizioni[2]][posizioni[3]]=-20000; //cout << "maxo" << massimi[0]; temp2 = massimi[0]; if(k-1>=0) { //oo for(i=0;imassimi[0]) { massimi[0]=temp1; posizioni[4]=i; posizioni[5]=j; posizioni[6]=i; posizioni[7]=j+1; } } massimi[1]=temp2; //ov for(j=0;j<3;j++) for(i=0;imassimi[1]) { massimi[1]=temp1; posizioni[8]=i; posizioni[9]=j; posizioni[10]=i+1; posizioni[11]=j; } } } for(i=0;imassimi[2]) { massimi[2]=temp1; posizioni[12]=i; posizioni[13]=j; posizioni[14]=i+1; posizioni[15]=j; } } matrice2[posizioni[12]][posizioni[13]]=-20000; matrice2[posizioni[14]][posizioni[15]]=-20000; temp2 = massimi[2]; if(k-1>=0) { //vo for(i=0;imassimi[2]) { massimi[2]=temp1; posizioni[16]=i; posizioni[17]=j; posizioni[18]=i; posizioni[19]=j+1; } } massimi[3]=temp2; //vv for(j=0;j<3;j++) for(i=0;imassimi[3]) { massimi[3]=temp1; posizioni[20]=i; posizioni[21]=j; posizioni[22]=i+1; posizioni[23]=j; } } } if(k-1!=0) { if(massimi[0]>=massimi[1]&&massimi[0]>=massimi[2]&&massimi[0]>=massimi[3]) { k=k-2; matrice[posizioni[0]][posizioni[1]]=-20000; matrice[posizioni[2]][posizioni[3]]=-20000; matrice[posizioni[4]][posizioni[5]]=-20000; matrice[posizioni[6]][posizioni[7]]=-20000; res+=massimi[0]; } if(massimi[1]>=massimi[0]&&massimi[1]>=massimi[2]&&massimi[1]>=massimi[3]) { k=k-2; matrice[posizioni[0]][posizioni[1]]=-20000; matrice[posizioni[2]][posizioni[3]]=-20000; matrice[posizioni[8]][posizioni[9]]=-20000; matrice[posizioni[10]][posizioni[11]]=-20000; res+=massimi[1]; } if(massimi[2]>=massimi[0]&&massimi[2]>=massimi[1]&&massimi[2]>=massimi[3]) { k=k-2; matrice[posizioni[12]][posizioni[13]]=-20000; matrice[posizioni[14]][posizioni[15]]=-20000; matrice[posizioni[16]][posizioni[17]]=-20000; matrice[posizioni[18]][posizioni[19]]=-20000; res+=massimi[2]; } if(massimi[3]>=massimi[0]&&massimi[3]>=massimi[1]&&massimi[3]>=massimi[2]) { k=k-2; matrice[posizioni[12]][posizioni[13]]=-20000; matrice[posizioni[14]][posizioni[15]]=-20000; matrice[posizioni[20]][posizioni[21]]=-20000; matrice[posizioni[22]][posizioni[23]]=-20000; res+=massimi[3]; } } if(k-1==0) { if(massimi[0]>=massimi[2]) { k=k-1; res+=massimi[0]; } else res+=massimi[2]; } } cout << res; fout.close(); return 0; }