artemgf

Плюсы минусы

Oct 7th, 2018
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #pragma once
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #define _USE_MATH_DEFINES
  4. #include <iostream>
  5. #include <string>
  6. #include <map>
  7. #include <set>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <stdio.h>
  11. #include <cmath>
  12. #include <math.h>
  13. #include <queue>
  14. #include <stack>
  15. #include <climits>
  16. #include <deque>
  17. #include <ctime>
  18. #include <iomanip>
  19. #include <bitset>
  20. #include <unordered_map>
  21. #include <unordered_set>
  22. #include <fstream>
  23.  
  24. using namespace std;
  25.  
  26. typedef long long ll;
  27. typedef unsigned long long ull;
  28. typedef unsigned int ui;
  29.  
  30. #define mh() make_heap()
  31. #define poph() pop_heap()
  32. #define pushh() push_heap()
  33. #define sor(n) n.begin(), n.end()
  34. #define rsor(n) n.rbegin(), n.rend()
  35. #define mp make_pair
  36. #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
  37. #define p(T) pair<T,T>
  38. #define toch(x) cout.precision(x), cout.setf(ios::fixed)
  39. #define znac(l) abs(l)/l
  40. #define IOS ios::sync_with_stdio(false)
  41. #define IOSB cin.tie(0), cout.tie(0);
  42. const ll ok = ll(1e9 + 7);
  43. string pol[1001];
  44. ll scp=0, scmin=0;
  45. void fix(ll i, ll j, ll sizei, ll sizej)
  46. {
  47.     for (int i1 = i; i1 < sizei; i1++)
  48.     {
  49.         for (int j1 = j; j1 < sizej; j1++)
  50.             pol[i1][j1] = '0';
  51.     }
  52. }
  53. ll findzn(ll i, ll j, ll n, ll m)
  54. {
  55.     ll starti = i;
  56.     ll startj = j;
  57.     ll s = 0;
  58.     while (j < m&&pol[i][j] == '1')
  59.     {
  60.         s++;
  61.         j++;
  62.     }
  63.     ll s2 = 0;
  64.     while (i < n&&pol[i][startj] == '1'&&s2<s)
  65.     {
  66.         s2++;
  67.         i++;
  68.     }
  69.     if (s2 == s)
  70.     {
  71.         if (j != 0 && pol[i][j-1] == '1')
  72.         {
  73.             fix(starti, startj - s, starti + 3 * s, startj + 2 * s);
  74.             scp++;
  75.             return startj + 2 * s;
  76.         }
  77.     }
  78.     while (i < m&&pol[starti][i] == '1')
  79.     {
  80.         s2++;
  81.         i++;
  82.     }
  83.     fix(starti, startj, starti + s2, startj + 3*s2);
  84.     scmin++;
  85.     return starti;
  86. }
  87.  
  88. int main()
  89. {
  90.     IOSB;
  91.     IOS;
  92. #ifdef TheCompiler
  93.     files;
  94. #endif
  95.     ll n, m;
  96.     cin >> n >> m;
  97.     for (int i = 0; i < n; i++)
  98.     {
  99.             cin >> pol[i];
  100.     }
  101.     for (int i = 0; i < n; i++)
  102.     {
  103.         for (int j = 0; j < m; j++)
  104.         {
  105.             if (pol[i][j] == '1')
  106.             {
  107.                 j=findzn(i, j, n, m);
  108.             }
  109.         }
  110.     }
  111.     cout << scp << " " << scmin;
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment