Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. long long a[301][301] = {};
  7.  
  8. bool check(vector<pair<int, int>> v)
  9. {
  10.     long long sum = 0;
  11.     int ind = -1;
  12.     for (int i = 0; i < v.size(); i++)
  13.     {
  14.         sum += a[v[i].first][v[i].second];
  15.         if (sum < 0)
  16.         {
  17.             ind = i;
  18.             long long sum1 = 0;
  19.             bool ans = 1;
  20.             for (int i = ind + 1; i < v.size(); i++)
  21.             {
  22.                 sum1 += a[v[i].first][v[i].second];
  23.                 if (sum1 < 0)
  24.                     ans = 0;
  25.             }
  26.             for (int i = 0; i < ind + 1; i++)
  27.             {
  28.                 sum1 += a[v[i].first][v[i].second];
  29.                 if (sum1 < 0)
  30.                     ans = 0;
  31.             }
  32.             if (ans)
  33.             {
  34.                 for (int i = ind + 1; i < v.size(); i++)
  35.                     cout << v[i].first + 1 << " " << v[i].second + 1 << endl;
  36.                 for (int i = 0; i < ind + 1; i++)
  37.                     cout << v[i].first + 1 << " " << v[i].second + 1 << endl;
  38.                 exit(0);
  39.             }
  40.         }
  41.     }
  42.     ind = -1;
  43.     sum = 0;
  44.     for (int i = ind + 1; i < v.size(); i++)
  45.     {
  46.         sum += a[v[i].first][v[i].second];
  47.         if (sum < 0)
  48.             return 0;
  49.     }
  50.     for (int i = 0; i < ind + 1; i++)
  51.     {
  52.         sum += a[v[i].first][v[i].second];
  53.         if (sum < 0)
  54.             return 0;
  55.     }
  56.     for (int i = ind + 1; i < v.size(); i++)
  57.         cout << v[i].first + 1 << " " << v[i].second + 1 << endl;
  58.     for (int i = 0; i < ind + 1; i++)
  59.         cout << v[i].first + 1 << " " << v[i].second + 1 << endl;
  60.     exit(0);
  61. }
  62.  
  63. int main()
  64. {
  65.     int n, m; cin >> n >> m;
  66.     if (n == 1 && m > 2 || m == 1 && n > 2 || n % 2 != 0 && m % 2 != 0)
  67.         cout << -1, exit(0);
  68.     long long sum = 0;
  69.     int posx = -1, posy = -1;
  70.     for (int i = 0; i < n; i++)
  71.         for (int j = 0; j < m; j++)
  72.         {
  73.             cin >> a[i][j];
  74.             if (a[i][j] < 0)
  75.                 posx = i, posy = j;
  76.             sum += a[i][j];
  77.         }
  78.     if (sum < 0)
  79.         cout << -1, exit(0);
  80.     if (n % 2 == 0)
  81.     {
  82.         vector<pair<int, int>> v;
  83.         for (int i = 0; i < m; i++)
  84.             v.push_back({ 0, i });
  85.         for (int i = 1; i < n; i++)
  86.         {
  87.             if (i % 2 == 0)
  88.                 for (int j = 1; j < m; j++)
  89.                     v.push_back({ i, j });
  90.             else
  91.                 for (int j = m - 1; j > 0; j--)
  92.                     v.push_back({ i, j });
  93.         }
  94.         for (int i = n - 1; i > 0; i--)
  95.             v.push_back({ i, 0 });
  96.         check(v);
  97.     }
  98.     if(m % 2 == 0)
  99.     {
  100.         vector <pair<int, int>> v;
  101.         for (int i = 0; i < n; i++)
  102.             v.push_back({ i, 0 });
  103.         for (int i = 1; i < m; i++)
  104.         {
  105.             if (i % 2 == 0)
  106.                 for (int j = 1; j < n; j++)
  107.                     v.push_back({ j, i });
  108.             else
  109.                 for (int j = n - 1; j > 0; j--)
  110.                     v.push_back({ j, i });
  111.         }
  112.         for (int i = m - 1; i > 0; i--)
  113.             v.push_back({ 0, i });
  114.         check(v);
  115.     }
  116.     cout << -1 << endl;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement