IMohammedNasr

Untitled

Apr 25th, 2022 (edited)
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define cin(v)        \
  4.     for (auto &i : v) \
  5.         cin >> i;
  6. #define cout(v)       \
  7.     for (auto &i : v) \
  8.         cout << i << " ";
  9. #define br cout << '\n';
  10. #define ll long long
  11. #define ull unsigned long long
  12. #define all(v) v.begin(), v.end()
  13. #define rall(v) v.rbegin(), v.rend()
  14. #define MOD 1000000007
  15. #define pi 3.14159265358979323846
  16. #define Time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs" \
  17.                   << "\n";
  18.  
  19. void Warding()
  20. {
  21.     ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  22. #ifndef ONLINE_JUDGE
  23.     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  24. #endif
  25. }
  26.  
  27. vector<ll> v;
  28.  
  29. bool test_arthi(ll i)
  30. {
  31.     if (i < 0 or i >= v.size())
  32.         return false;
  33.     ll keep = v[i];
  34.     if (i == 0)
  35.         v[i] = v[i + 1] + (v[v.size() - 2] - v[v.size() - 1]);
  36.     else if (i == v.size() - 1)
  37.         v[i] = v[i - 1] + (v[1] - v[0]);
  38.     else
  39.         v[i] = (v[i + 1] + v[i - 1]) / 2;
  40.     ll holder = v[1] - v[0];
  41.     if (v[i] <= 0)
  42.     {
  43.         v[i] = keep;
  44.         return false;
  45.     }
  46.     for (int j = 1; j < v.size(); j++)
  47.     {
  48.         if (v[j] - v[j - 1] != holder)
  49.         {
  50.             v[i] = keep;
  51.             return false;
  52.         }
  53.     }
  54.     v[i] = keep;
  55.     return true;
  56. }
  57.  
  58. void solve()
  59. {
  60.     bool flag = 0;
  61.     ll n, found = 0;
  62.     cin >> n;
  63.     v.resize(n);
  64.     cin(v);
  65.     if (n <= 2)
  66.     {
  67.         cout << "YES" << '\n';
  68.         return;
  69.     }
  70.     ll diff = v[1] - v[0];
  71.     for (ll i = 1; i < n; i++)
  72.     {
  73.         if (v[i] - v[i - 1] != diff and !flag)
  74.         {
  75.             found = i;
  76.             flag = true;
  77.         }
  78.     }
  79.     if (flag)
  80.     {
  81.         for (ll i = 0; i < 3; i++)
  82.         {
  83.             bool test = test_arthi(found - i), test2 = test_arthi(found + i), test3 = test_arthi(i);
  84.             if (test or test3 or (test2 and i != 0))
  85.             {
  86.                 cout << "YES" << '\n';
  87.                 return;
  88.             }
  89.         }
  90.     }
  91.     else if (!flag)
  92.     {
  93.         cout << "YES" << '\n';
  94.         return;
  95.     }
  96.     cout << "NO" << '\n';
  97. }
  98.  
  99. int main()
  100. {
  101.     Warding();
  102.     int t = 1;
  103.     cin >> t;
  104.     while (t--)
  105.     {
  106.         solve();
  107.     }
  108.     Time
  109. }
Add Comment
Please, Sign In to add comment