Josif_tepe

Untitled

Mar 16th, 2026
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5. int n;
  6. int arr[2001], father[2001];
  7. const int INF = (1 << 20);
  8. int main()
  9. {
  10.     ios_base::sync_with_stdio(false);
  11.     cin >> n;
  12.     for(int i = 0; i < n; i ++){
  13.         cin >> arr[i];
  14.     }
  15.     for(int i = 0; i < n; i ++){
  16.         cin >> father[i];
  17.     }
  18.     vector<int> diff;
  19.     int maxDiff = 0;
  20.     for(int i = 0; i < n; i ++){
  21.         if(arr[i] > father[i]){
  22.             diff.push_back(-(arr[i] - father[i]));
  23.         }
  24.         else if(arr[i] < father[i]){
  25.             diff.push_back(abs(arr[i] - father[i]));
  26.         }
  27.         else{
  28.             diff.push_back(0);
  29.         }
  30.         maxDiff = max(maxDiff, abs(arr[i] - father[i]));
  31.     }
  32.     int levo, desno;
  33.     bool znak;
  34.     int mnn;
  35.     int tmplevo,  tmpdesno;
  36.     int t = 10;
  37.     bool da;
  38.     long long ret = 0;
  39.     while(true){
  40.     levo = INF;
  41.     desno = -INF;
  42.     tmplevo = INF;
  43.     tmpdesno = -INF;
  44.         for(int i = 0; i < n; i ++){
  45.             if(diff[i] < 0){
  46.                 int j = i;
  47.  
  48.                 while(j < n && diff[j] < 0){
  49.                     levo = i;
  50.                     desno = j;
  51.                     j ++;
  52.                 }
  53.                   if(desno - levo > tmpdesno - tmplevo){
  54.                 tmpdesno = desno;
  55.                 tmplevo = levo;
  56.             }
  57.             }
  58.  
  59.             if(diff[i] > 0){
  60.                 int j = i;
  61.                 while(j < n && diff[j] > 0){
  62.                     levo = i;
  63.                     desno = j;
  64.                     j ++;
  65.                 }
  66.                  if(desno - levo > tmpdesno - tmplevo){
  67.                 tmpdesno = desno;
  68.                 tmplevo = levo;
  69.             }
  70.             }
  71.  
  72.         }
  73.     //    cout << tmplevo <<  " " << tmpdesno << endl;
  74.  
  75.         mnn = INF;
  76.         for(int i = tmplevo; i <= tmpdesno; i ++){
  77.             mnn = min(mnn, abs(diff[i]));
  78.         }
  79.         for(int i = tmplevo; i <= tmpdesno; i ++){
  80.             int j = mnn;
  81.             while(j --){
  82.                 if(diff[i] < 0){
  83.                     diff[i] ++;
  84.                 }
  85.                 else if(diff[i] > 0){
  86.                     diff[i] --;
  87.                 }
  88.                 if(diff[i] == 0)break;
  89.             }
  90.         }
  91.         ret += mnn;
  92.         da = false;
  93.         for(int i =0 ; i < n; i ++){
  94.             if(diff[i] == 0){
  95.                 da = true;
  96.             }
  97.             else{
  98.                 da = false;
  99.                 break;
  100.             }
  101.         }
  102.  
  103.         if(da)break;
  104.     }
  105.     cout << ret << endl;
  106.  
  107.     return 0;
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment