knightL

Yandex C

Oct 9th, 2021
3,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <numeric>
  3. #include <algorithm>
  4. #include <set>
  5. #include <map>
  6. #include <queue>
  7. #include <cassert>
  8. #include <vector>
  9. #include <string>
  10. using namespace std;
  11.  
  12. typedef long long ll;
  13.  
  14. int main()
  15. {
  16.     int k;
  17.     scanf("%d", &k);
  18.     vector<int> a(k), b(k);
  19.     for(int i=0;i<k;i++)
  20.         scanf("%d",&a[i]);
  21.     for(int i=0;i<k;i++)
  22.         scanf("%d",&b[i]);
  23.  
  24.     int total = accumulate(a.begin(), a.end(), 0);
  25.     for(int res = total; res>=1; res--)
  26.         if(total%res == 0)
  27.         {
  28.             bool can = true;
  29.             for(int i=0;i<k;i++)
  30.                 if(b[i]*ll(res) > a[i])
  31.                     can = false;
  32.  
  33.             if(can)
  34.             {
  35.  
  36.                 vector<int> prefix;
  37.                 for(int i=0;i<k;i++)
  38.                     for(int j=0;j<b[i];j++)
  39.                         prefix.push_back(i+1);
  40.  
  41.                 vector<int> left;
  42.                 for(int i=0;i<k;i++)
  43.                     for(int j=0;j<(a[i]-res*b[i]);j++)
  44.                         left.push_back(i+1);
  45.  
  46.                 int leftPerRow = left.size()/res;
  47.  
  48.                 printf("%d %d\n", res, total/res);
  49.                 for(int i=0;i<res;i++)
  50.                 {
  51.                     for(int j: prefix)
  52.                     {
  53.                         printf("%d ", j);
  54.                     }
  55.                     for(int j=0;j<leftPerRow;j++)
  56.                     {
  57.                         printf("%d ", left.back());
  58.                         left.pop_back();
  59.                     }
  60.                     puts("");
  61.                 }
  62.                 return 0;
  63.             }
  64.         }
  65.  
  66.     return 0;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment