Advertisement
a53

MisterL

a53
Dec 21st, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <iostream>
  2. #define N 205
  3. using namespace std;
  4. int n,m,a[N][N];
  5. int st[N][N],dr[N][N],ss[N][N],js[N][N];
  6.  
  7. int numar(int L1,int L2) /// Numara formatiunile
  8. {
  9. if(L1<2||L2<2) /// Daca cel putin 1 e mai mica decat 2, nu exista formatiuni
  10. return 0;
  11. if(L1<L2) /// Vrem ca in L1 sa memoram lungimea cea mai mare
  12. swap(L1,L2);
  13. int nr=0,i=L1,j=L2;
  14. if(i<2*j) /// Daca L1 e mai mica decat dublul lui L2
  15. j=i/2; /// atunci faxcem L2 jumatate din L1
  16. if(j>1) /// Daca exista formatiuni
  17. nr+=j-1; /// atunci le numaram
  18. if(L2/2>1) /// Daca putem forma formatiuni si invers
  19. nr+=L2/2-1; /// atunci le numaram si pe acestea
  20. return nr;
  21. }
  22.  
  23. int main()
  24. {
  25. cin>>n>>m;
  26. for(int i=0;i<n;++i)
  27. for(int j=0;j<m;++j)
  28. cin>>a[i][j];
  29. int k;
  30. for(int i=0;i<n;++i)
  31. for(int j=0;j<m;++j)
  32. if(a[i][j])
  33. {
  34. k=j;while(k>=0&&a[i][k]) ++st[i][j],--k; /// Stanga
  35. k=j;while(k<=m&&a[i][k]) ++dr[i][j],++k; /// Dreapta
  36. k=i;while(k>=0&&a[k][j]) ++ss[i][j],--k; /// Sus
  37. k=i;while(k<=n&&a[k][j]) ++js[i][j],++k; /// Jos
  38. }
  39. int sol=0;
  40. for(int i=0;i<n;++i)
  41. for(int j=0;j<m;++j)
  42. if(a[i][j]==1)
  43. {
  44. sol+=numar(st[i][j],ss[i][j]); /// Stanga-Sus
  45. sol+=numar(st[i][j],js[i][j]); /// Stanga-Jos
  46. sol+=numar(dr[i][j],ss[i][j]); /// Dreapta-Sus
  47. sol+=numar(dr[i][j],js[i][j]); /// Dreapta-Jos
  48. }
  49. cout<<sol;
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement