Facebook
From Sloppy Pintail, 9 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 817
  1.     for (int l=0 ; l<=2 ; l++)
  2.     {
  3.         sumy[poprz][l][0]=0;
  4.         sumy[poprz][l][1]=max(skarby[0][(l+2)%3], skarby[0][(l+4)%3]);
  5.         sumy[poprz][l][2]=skarby[0][(l+2)%3]+skarby[0][(l+4)%3];
  6.  
  7.         for (int i=1 ; i<n ; i++)
  8.         {
  9.         // W kazdym sektorze bierzemy co najwyzej 2 robotnikow,
  10.         // wiec po i-tym mozemy wybrac max 2*i+2 (i>=0)
  11.             sumy[akt][0][0]=0;
  12.  
  13.             sumy[akt][0][1]=max(max(max(max(sumy[poprz][0][1], sumy[poprz][1][1]), sumy[poprz][2][1]),
  14.                             sumy[poprz][0][0]+max(skarby[0][1],skarby[0][2])), sumy[poprz][1][0]+skarby[0][2]);
  15.  
  16.             sumy[akt][0][2]=max(max(max(max(max(sumy[poprz][0][2], sumy[poprz][1][2]), sumy[poprz][2][2]),
  17.                             sumy[poprz][0][1]+max(skarby[0][1],skarby[0][2])), sumy[poprz][1][1]+skarby[0][2]),
  18.                             sumy[poprz][0][0]+skarby[0][1]+skarby[0][2]);
  19.  
  20.             sumy[akt][1][0]=0;
  21.  
  22.             sumy[akt][1][1]=max(max(max(max(max(sumy[poprz][0][1], sumy[poprz][1][1]), sumy[poprz][2][1]),
  23.                             sumy[poprz][0][0]+skarby[0][2]), sumy[poprz][2][0]+skarby[0][0]),
  24.                             sumy[poprz][0][0]+max(skarby[0][0],skarby[0][2]));
  25.  
  26.             sumy[akt][1][2]=max(max(max(max(max(max(sumy[poprz][0][2], sumy[poprz][1][2]), sumy[poprz][2][2]),
  27.                             sumy[poprz][0][1]+skarby[0][2]), sumy[poprz][2][1]+skarby[0][0]),
  28.                             sumy[poprz][0][1]+max(skarby[0][0],skarby[0][2])), sumy[poprz][1][0]+skarby[i][0]+
  29.                             skarby[0][2]);
  30.  
  31.             sumy[akt][2][0]=0;
  32.  
  33.             sumy[akt][2][1]=max(max(max(max(sumy[poprz][0][1], sumy[poprz][1][1]), sumy[poprz][2][1]), sumy[poprz][2][0]+
  34.                             max(skarby[0][0],skarby[0][1])), sumy[poprz][1][0]+skarby[0][0]);
  35.  
  36.             sumy[akt][2][2]=max(max(max(max(max(sumy[poprz][0][2], sumy[poprz][1][2]), sumy[poprz][2][2]), sumy[poprz][2][1]+
  37.                             max(skarby[0][0],skarby[0][1])), sumy[poprz][1][1]+skarby[0][0]), sumy[poprz][2][0]+skarby[0][0]+
  38.                             skarby[0][1]);
  39.  
  40.             for (int j=1 ; j<=min(2, k) ; j++)
  41.             {
  42.                 maks=max(maks, sumy[akt][0][j]);
  43.                 maks=max(maks, sumy[akt][1][j]);
  44.                 maks=max(maks, sumy[akt][2][j]);
  45.             }
  46.  
  47.             for (int j=3 ; j<=min(2*i+2, k) ; j++)
  48.             {
  49.                 sumy[akt][0][j]=max(max(max(max(max(sumy[poprz][0][j], sumy[poprz][1][j]), sumy[poprz][2][j]),
  50.                                 sumy[poprz][0][j-1]+max(skarby[i][1],skarby[i][2])), sumy[poprz][1][j-1]+skarby[i][2]),
  51.                                 sumy[poprz][0][j-2]+skarby[i][1]+skarby[i][2]);
  52.  
  53.                 sumy[akt][1][j]=max(max(max(max(max(max(sumy[poprz][0][j], sumy[poprz][1][j]), sumy[poprz][2][j]),
  54.                                 sumy[poprz][0][j-1]+skarby[i][2]), sumy[poprz][2][j-1]+skarby[i][0]),
  55.                                 sumy[poprz][0][j-1]+max(skarby[i][0],skarby[i][2])), sumy[poprz][1][j-2]+skarby[i][0]+
  56.                                 skarby[i][2]);
  57.  
  58.                 sumy[akt][2][j]=max(max(max(max(max(sumy[poprz][0][j], sumy[poprz][1][j]), sumy[poprz][2][j]), sumy[poprz][2][j-1]+
  59.                                 max(skarby[i][0],skarby[i][1])), sumy[poprz][1][j-1]+skarby[i][0]), sumy[poprz][2][j-2]+skarby[i][0]+
  60.                                 skarby[i][1]);
  61.  
  62.                 // ostatni sektor
  63.                 if (i==n-1)
  64.                 {
  65.                     maks=max(maks, sumy[akt][l][j]);
  66.                 }
  67.                 else
  68.                 {
  69.                     maks=max(maks, sumy[akt][0][j]);
  70.                     maks=max(maks, sumy[akt][1][j]);
  71.                     maks=max(maks, sumy[akt][2][j]);
  72.                 }
  73.             }
  74.             poprz=1-poprz;
  75.             akt=1-akt;
  76.         }
  77.     }