SHARE
TWEET

Untitled

a guest Dec 8th, 2019 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int a[101][101], n, m, k, p, L[101], c[101], x[101], i, j;
  6.  
  7. int main()
  8. {
  9.     cin>>n>>m>>k;
  10.     for(i=1; i<=n; ++i)
  11.         for(j=1; j<=m; ++j)
  12.             cin>>a[i][j];
  13.  
  14.     for(i=1; i<=n; i++)
  15.     {
  16.         a[i][0]=0;
  17.         for(j=1; j<=m; ++j)
  18.             a[i][0]+=a[i][j];
  19.     }
  20.     p=0;
  21.     if(k==n-1)
  22.     {
  23.         //este posibil ca toate liniile sa aibe sume diferite
  24.         //determinam suma maxima SMAX
  25.         //toate celelalte linii se vor modifica astfel incat sa se obtina suma SMAX
  26.         //pe fiecare linie va creste cel mai mic element
  27.         int SMAX=0;
  28.         for(i=1; i<=n; ++i)
  29.             if(a[i][0]>SMAX)
  30.              SMAX=a[i][0];
  31.         for(i=1; i<=n; ++i)
  32.             if(a[i][0]!=SMAX)
  33.         {
  34.             int jmin=1;
  35.             for(j=2; j<=m; ++j)
  36.                 if(a[i][j]<a[i][jmin])
  37.                     jmin=j;
  38.             ++p; L[p]=i; c[p]=jmin; x[p]=a[i][jmin]+(SMAX-a[i][0]);
  39.         }
  40.     }
  41.     else
  42.     {
  43.         //trebuie sa existe cel putin n-k linii cu aceeasu syma a elementelor
  44.         //determinam suma care apare de cel putin n-k ori, fie aceasta s
  45.         //pentru celelalte linii vom modifica cate un element
  46.         //daca suma este mai mica decat s, marim cel mai mic element, daca suma este mai mare decat s micsoram cel mai mare element.Daca nu ajunge, continuam cu micsorarea
  47.         int s=-1;
  48.         for(i=1; i<=n && s==-1; i++)
  49.         {
  50.             int cnt=1;
  51.             for(j=1; j<=n; j++)
  52.                 if(a[i][0]==a[j][0])
  53.                     cnt++;
  54.             if(cnt>=n-k)
  55.                 s=a[i][0];
  56.         }
  57.         for(i=1; i<=n; ++i)
  58.             if(a[i][0]<s)
  59.         {
  60.             //vom mari un element
  61.             int jmin=1;
  62.             for(j=2; j<=m; ++j)
  63.                 if(a[i][j]<a[i][jmin])
  64.                     jmin=j;
  65.             int plus=s-a[i][0];
  66.             a[i][jmin]+=plus;
  67.             ++p; L[p]=i; c[p]=jmin; x[p]=a[i][jmin];
  68.         }
  69.         else
  70.             while(a[i][0]>s)
  71.         {
  72.             //vom micsora un element
  73.             int jmax=1;
  74.             for(j=2; j<=m; ++j)
  75.                 if(a[i][j]>a[i][jmax])
  76.                     jmax=j;
  77.             int dif;
  78.             if(a[i][0]-s<=a[i][jmax])
  79.                 dif=a[i][0]-s;
  80.             else
  81.                 dif=a[i][jmax];
  82.             a[i][jmax]-=dif;
  83.             a[i][0]-=dif;
  84.             ++p; L[p]=i; c[p]=jmax; x[p]=a[i][jmax];
  85.         }
  86.     }
  87.     cout<<p<<endl;
  88.     for(i=1; i<=p; i++)
  89.         cout<<L[i]<<" "<<c[i]<<" "<<x[i]<<endl;
  90.     return 0;
  91. }
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