pastebin - collaborative debugging tool
kpaste.net RSS


Spaceship
Posted by Anonymous on Sun 18th Mar 2018 04:07
raw | new post

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<vector <int> > row;
  5. vector<int> possible_pos;
  6.  
  7. void print(){
  8.     for(int i=0; i<row.size();i++){
  9.         for(int j=0; j<row[0].size();j++)
  10.             cout<<row[i][j]<<" ";
  11.         cout<<endl;
  12.     }
  13. }
  14. void print_pos(){
  15.     cout<<endl;
  16.     for(int i=0; i<possible_pos.size();i++){
  17.         cout<<possible_pos[i];
  18.     }
  19.     cout<<endl;
  20. }
  21.  
  22. void set_initial_changes(){
  23.     //initial position set
  24.     possible_pos.push_back(0);
  25.     if(row[0][1]!=2)
  26.         possible_pos.push_back(1);
  27.     else
  28.         possible_pos.push_back(0);
  29.     if(row[0][2]!=2)
  30.         possible_pos.push_back(1);
  31.     else
  32.         possible_pos.push_back(0);
  33.     if(row[0][3]!=2)
  34.         possible_pos.push_back(1);
  35.     else
  36.         possible_pos.push_back(0);
  37.     possible_pos.push_back(0);
  38.    
  39.     //initial row set
  40.     for(int i=0;i<row[0].size();i++){
  41.         if(row[0][i]==1 && i>0 && i<3)
  42.             row[0][i]=1;
  43.         else
  44.             row[0][i]=0;
  45.     }
  46. }
  47.  
  48. void next_step(int look_for){
  49.     for(int i=0;i<possible_pos.size();i++){
  50.         if(possible_pos[i]!=0){
  51.             if(i-1<0){
  52.                 if(row[look_for][i]!=-1)
  53.                     possible_pos[i]=1;
  54.                 if(row[look_for][i+1]!=-1)
  55.                     possible_pos[i+1]=1;
  56.                 if(row[look_for][i]==-1)
  57.                     possible_pos[i]=0;
  58.                 if(row[look_for][i+1]==-1)
  59.                     possible_pos[i+1]=0;
  60.             }
  61.             else if(i+1>=possible_pos.size()){
  62.                 if(row[look_for][i-1]!=-1)
  63.                     possible_pos[i-1]=1;
  64.                 if(row[look_for][i]!=-1)
  65.                     possible_pos[i]=1;
  66.                 if(row[look_for][i-1]==-1)
  67.                     possible_pos[i-1]=0;
  68.                 if(row[look_for][i]==-1)
  69.                     possible_pos[i]=0;
  70.             }
  71.             else{
  72.                 if(row[look_for][i-1]!=-1)
  73.                     possible_pos[i-1]=1;
  74.                 if(row[look_for][i]!=-1)
  75.                     possible_pos[i]=1;
  76.                 if(row[look_for][i+1]!=-1)
  77.                     possible_pos[i+1]=1;
  78.                 if(row[look_for][i-1]==-1)
  79.                     possible_pos[i-1]=0;
  80.                 if(row[look_for][i]==-1)
  81.                     possible_pos[i]=0;
  82.                 if(row[look_for][i+1]==-1)
  83.                     possible_pos[i+1]=0;
  84.             }
  85.         }
  86.     }
  87. }
  88.  
  89. void eleminate_enemy(int look_for){
  90.     for(int i=0; i<possible_pos.size();i++)
  91.         if(row[look_for][i]==2)
  92.             row[look_for][i]= -1;
  93. }
  94.  
  95. void point_row(int look_for){
  96.     vector<vector<int>> temp_row;
  97.     vector<int> temp_col;
  98.     for(int i=0; i<possible_pos.size();i++){
  99.         if(possible_pos[i]!=0){
  100.             if(i==0){
  101.                 if(row[look_for][i]>=0){
  102.                     temp_col.push_back(max(row[look_for][i], row[look_for-1][i] + row[look_for][i]));
  103.                     temp_col.push_back(max(row[look_for][i+1], row[look_for-1][i] + row[look_for][i+1]));
  104.                     temp_col.push_back(row[look_for][2]);
  105.                     temp_col.push_back(row[look_for][3]);
  106.                     temp_col.push_back(row[look_for][4]);
  107.                     temp_row.push_back(temp_col);
  108.                     // cout<<" look_for and i = "<<look_for<<i<<endl;
  109.                     // cout<<temp_col[0]<<" "<<temp_col[1]<<" "<<temp_col[2]<<" "<<temp_col[3]<<" "<<temp_col[4];
  110.                     // cout<<endl;
  111.                     temp_col.clear();
  112.                 }
  113.             }
  114.             else if(i==possible_pos.size()-1){
  115.                 if(row[look_for][i]>=0){
  116.                     temp_col.push_back(row[look_for][0]);
  117.                     temp_col.push_back(row[look_for][1]);
  118.                     temp_col.push_back(row[look_for][2]);
  119.                     temp_col.push_back(max(row[look_for][i-1], row[look_for][i-1] + row[look_for-1][i]));
  120.                     temp_col.push_back(max(row[look_for][i], row[look_for-1][i] + row[look_for][i]));
  121.                     temp_row.push_back(temp_col);
  122.                     // cout<<" look_for and i = "<<look_for<<i<<endl;
  123.                     // cout<<temp_col[0]<<" "<<temp_col[1]<<" "<<temp_col[2]<<" "<<temp_col[3]<<" "<<temp_col[4];
  124.                     // cout<<endl;
  125.                     temp_col.clear();
  126.                 }
  127.             }
  128.             else{
  129.                 if(row[look_for][i]>=0){
  130.                     temp_col.push_back(max(row[look_for][i-1], row[look_for][i-1] + row[look_for-1][i]));
  131.                     temp_col.push_back(max(row[look_for][i], row[look_for-1][i] + row[look_for][i]));
  132.                     temp_col.push_back(max(row[look_for][i+1], row[look_for-1][i] + row[look_for][i+1]));
  133.                     if(i==1){
  134.                         temp_col.push_back(row[look_for][3]);
  135.                         temp_col.push_back(row[look_for][4]);
  136.                     }
  137.                     if(i==2){
  138.                         temp_col.insert(temp_col.begin(), row[look_for][0]);
  139.                         temp_col.push_back(row[look_for][4]);
  140.                     }
  141.                     if(i==3){
  142.                         temp_col.insert(temp_col.begin(), row[look_for][1]);
  143.                         temp_col.insert(temp_col.begin(), row[look_for][0]);
  144.                        
  145.                     }
  146.                     temp_row.push_back(temp_col);
  147.                     // cout<<" look_for and i = "<<look_for<<i<<endl;
  148.                     // cout<<temp_col[0]<<" "<<temp_col[1]<<" "<<temp_col[2]<<" "<<temp_col[3]<<" "<<temp_col[4];
  149.                     // cout<<endl;
  150.                     temp_col.clear();
  151.                 }
  152.             }
  153.         }
  154.     }
  155.    
  156.         int maxa=temp_row[0][0];
  157.         int maxb=temp_row[0][1];
  158.         int maxc=temp_row[0][2];
  159.         int maxd=temp_row[0][3];
  160.         int maxe=temp_row[0][4];
  161.         for(int k=1; k<temp_row.size();k++){
  162.             for(int l=0; l<temp_row[0].size();l++){
  163.                 if(l==0)
  164.                     maxa = max(maxa, temp_row[k][l]);
  165.                 if(l==1)
  166.                     maxb = max(maxb, temp_row[k][l]);
  167.                 if(l==2)
  168.                     maxc = max(maxc, temp_row[k][l]);
  169.                 if(l==3)
  170.                     maxd = max(maxd, temp_row[k][l]);
  171.                 if(l==4)
  172.                     maxe = max(maxe, temp_row[k][l]);
  173.             }
  174.         }
  175.         // cout<<"max"<< maxa<<" "<< maxb<<" "<< maxc<<" "<< maxd<<" "<< maxe<<endl;
  176.         row[look_for][0]= row[look_for][0]<0 ? 0 : maxa;
  177.         row[look_for][1]=row[look_for][1]<0 ? 0 : maxb;
  178.         row[look_for][2]=row[look_for][2]<0 ? 0 : maxc;
  179.         row[look_for][3]=row[look_for][3]<0 ? 0 : maxd;
  180.         row[look_for][4]=row[look_for][4]<0 ? 0 : maxe;
  181. }
  182.  
  183. void working(){
  184.     int look_for=0;
  185.     for(look_for=0;look_for<row.size();look_for++){
  186.         if(look_for==0){
  187.             set_initial_changes();
  188.         }
  189.         else{
  190.             eleminate_enemy(look_for);
  191.             next_step(look_for);
  192.             point_row(look_for);
  193.         }
  194.     }
  195. }
  196.  
  197.  
  198. int main(){
  199.     int levels;
  200.     int a,b,c,d,e;
  201.     cin>>levels;
  202.     vector<int> col;
  203.     while(levels--){
  204.         cin>>a>>b>>c>>d>>e;
  205.         col.push_back(a);
  206.         col.push_back(b);
  207.         col.push_back(c);
  208.         col.push_back(d);
  209.         col.push_back(e);
  210.         row.insert(row.begin(),  col);
  211.         col.clear();
  212.     }
  213.     working();
  214.     int res=0;
  215.     for(int i=row.size()-1;i<row.size();i++){
  216.         for(int j=0;j<row[0].size();j++){
  217.             res=max(res, row[i][j]);
  218.         }
  219.     }
  220.     cout<<res;
  221.     return 0;
  222. }

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}





All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at