SHARE
TWEET

Untitled

a guest Jan 24th, 2020 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<fstream>
  3. #include<queue>
  4. #include<climits>
  5. using namespace std;
  6. ifstream fin("livada.in");
  7. ofstream fout("livada.out");
  8.  
  9. int a[1005][1005];
  10. int di[4]= {0,-1,0,1};
  11. int dj[4]= {-1,0,1,0};
  12.  
  13. queue<pair<int,int> >q;
  14.  
  15. int L,E;
  16. int locuri=0;
  17. int cateMax=0;
  18.  
  19. int cmmdc(int a, int b)
  20. {
  21.     int r, d, i;
  22.     d=a;
  23.     i=b;
  24.  
  25.     while(i>0)
  26.     {
  27.         r=d%i;
  28.         d=i;
  29.         i=r;
  30.     }
  31.  
  32.     return d;
  33.  
  34. }
  35.  
  36.  
  37. int Fill(int i, int j, int veche)
  38. {
  39.     int k, nexti, nextj;
  40.     int nou=-1;
  41.     int cate=1;
  42.  
  43.     q.push({i, j});
  44.     a[i][j]=nou;
  45.  
  46.     while(!q.empty())
  47.     {
  48.         i=q.front().first;
  49.         j=q.front().second;
  50.         q.pop();
  51.  
  52.         for(k=0;k<4;k++)
  53.         {
  54.             nexti=i+di[k];
  55.             nextj=j+dj[k];
  56.             if(a[nexti][nextj]==veche)
  57.             {
  58.                 cate++;
  59.                 q.push({nexti, nextj});
  60.                 a[nexti][nextj]=nou;
  61.             }
  62.         }
  63.  
  64.     }
  65.  
  66.     return cate;
  67.  
  68. }
  69.  
  70.  
  71. void Lee()
  72. {
  73.     int k, nexti, nextj;
  74.     int i1, j1;
  75.     int i, j;
  76.     int cateInitial, auxInitial;
  77.     int cate, aux;
  78.     int p;
  79.  
  80.     while(!q.empty())
  81.     {
  82.         i1=q.front().first;
  83.         j1=q.front().second;
  84.         q.pop();
  85.  
  86.         if(a[i1][j1]==2)
  87.         {
  88.             cateInitial=1;
  89.             auxInitial=E-3;
  90.         }
  91.         else
  92.         {
  93.             cateInitial=0;
  94.             auxInitial=E;
  95.         }
  96.  
  97.         for(k=0; k<4; k++)
  98.         {
  99.             i=i1;
  100.             j=j1;
  101.             //cout<<i<<" "<<j<<"\n"; cred ca aici e problema
  102.             cate=cateInitial;
  103.             aux=auxInitial;
  104.  
  105.             for(p=0; p<=INT_MAX; p++)
  106.             {
  107.                 nexti=i+di[k];
  108.                 nextj=j+dj[k];
  109.  
  110.                 if(a[nexti][nextj]==1)
  111.                 {
  112.                     break;
  113.                 }
  114.                 else
  115.                 {
  116.                     if(a[nexti][nextj]==0)
  117.                     {
  118.                         if(aux-1>=0)
  119.                         {
  120.                             aux--;
  121.                             i=nexti;
  122.                             j=nextj;
  123.                         }
  124.                         else
  125.                         {
  126.                             break;
  127.                         }
  128.                     }
  129.  
  130.                     if(a[nexti][nextj]==2)
  131.                     {
  132.                         if(aux-4>=0)
  133.                         {
  134.                             cate++;
  135.                             aux-=4;
  136.                             i=nexti;
  137.                             j=nextj;
  138.                         }
  139.                         else
  140.                         {
  141.                             break;
  142.                         }
  143.                     }
  144.  
  145.                     if(a[nexti][nextj]==-1)
  146.                     {
  147.                         if(aux-1>=0)
  148.                         {
  149.                             // aux--;
  150.                             //i=nexti;
  151.                             //j=nextj;
  152.                             locuri++;
  153.                             if(cate>cateMax)
  154.                             {
  155.                                 cateMax=cate;
  156.                             }
  157.  
  158.                         }
  159.                         break;
  160.                     }
  161.  
  162.                 }
  163.  
  164.             }
  165.  
  166.         }
  167.     }
  168.  
  169. }
  170.  
  171.  
  172. int main()
  173. {
  174.     int c,n,m;
  175.     int i,j;
  176.  
  177.     fin>>c;
  178.     fin>>n>>m;
  179.  
  180.     for(i=1; i<=n; i++)
  181.     {
  182.         for(j=1; j<=m; j++)
  183.         {
  184.             fin>>a[i][j];
  185.         }
  186.     }
  187.  
  188.     fin>>L>>E;
  189.  
  190.     if(c==1)
  191.     {
  192.         int nrP;
  193.         nrP=(n/L)*(m/L);
  194.         fout<<nrP<<" "<<(n*m)-(nrP*L*L);
  195.     }
  196.  
  197.  
  198.     if(c==2)
  199.     {
  200.         fout<<cmmdc(n, m);
  201.     }
  202.  
  203.  
  204.     if(c==3)
  205.     {
  206.  
  207.         int numar;
  208.         int max1=INT_MIN, max2=INT_MIN;
  209.  
  210.         for(i=1;i<=n;i++)
  211.         {
  212.             for(j=1;j<=m;j++)
  213.             {
  214.                 if(a[i][j]==1)
  215.                 {
  216.                     numar=Fill(i, j, 1);
  217.                     if(numar>max1)
  218.                     {
  219.                         max1=numar;
  220.                     }
  221.                 }
  222.  
  223.                 if(a[i][j]==2)
  224.                 {
  225.                     numar=Fill(i, j, 2);
  226.                     if(numar>max2)
  227.                     {
  228.                         max2=numar;
  229.                     }
  230.                 }
  231.             }
  232.         }
  233.  
  234.         fout<<max1<<" "<<max2;
  235.  
  236.     }
  237.  
  238.  
  239.     if(c==4)
  240.     {
  241.         for(j=0; j<=m+1; j++)
  242.         {
  243.             a[0][j]=a[n+1][j]=-1;
  244.         }
  245.         for(i=0; i<=n+1; i++)
  246.         {
  247.             a[i][0]=a[i][m+1]=-1;
  248.         }
  249.  
  250.         for(i=2; i<n; i++)
  251.         {
  252.             for(j=2; j<m; j++)
  253.             {
  254.                 if(a[i][j]!=1)
  255.                 {
  256.                     q.push({i,j});
  257.                 }
  258.             }
  259.         }
  260.  
  261.         Lee();
  262.         fout<<locuri<<" "<<cateMax;
  263.  
  264.         /*while(!q.empty())
  265.         {
  266.             fout<<q.front().first<<" ";
  267.             fout<<q.front().second;
  268.             fout<<"\n";
  269.             q.pop();
  270.         }*/
  271.  
  272.         /* for(i=0; i<=n+1; i++)
  273.          {
  274.              for(j=0; j<=m+1; j++)
  275.              {
  276.                  fout<<a[i][j]<<" ";
  277.              }
  278.              fout<<"\n";
  279.          }*/
  280.     }
  281.  
  282.  
  283.  
  284.     fin.close();
  285.     fout.close();
  286.     return 0;
  287.  
  288. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top