Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define cin(v) \
- for (auto &i : v) \
- cin >> i;
- #define cout(v) \
- for (auto &i : v) \
- cout << i << " ";
- #define br cout << '\n';
- #define ll long long
- #define ull unsigned long long
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- #define MOD 1000000007
- #define pi 3.14159265358979323846
- #define Time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs" \
- << "\n";
- void Warding()
- {
- ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
- #endif
- }
- vector<ll> v;
- bool test_arthi(ll i)
- {
- if (i < 0 or i >= v.size())
- return false;
- ll keep = v[i];
- if (i == 0)
- v[i] = v[i + 1] + (v[v.size() - 2] - v[v.size() - 1]);
- else if (i == v.size() - 1)
- v[i] = v[i - 1] + (v[1] - v[0]);
- else
- v[i] = (v[i + 1] + v[i - 1]) / 2;
- ll holder = v[1] - v[0];
- if (v[i] <= 0)
- {
- v[i] = keep;
- return false;
- }
- for (int j = 1; j < v.size(); j++)
- {
- if (v[j] - v[j - 1] != holder)
- {
- v[i] = keep;
- return false;
- }
- }
- v[i] = keep;
- return true;
- }
- void solve()
- {
- bool flag = 0;
- ll n, found = 0;
- cin >> n;
- v.resize(n);
- cin(v);
- if (n <= 2)
- {
- cout << "YES" << '\n';
- return;
- }
- ll diff = v[1] - v[0];
- for (ll i = 1; i < n; i++)
- {
- if (v[i] - v[i - 1] != diff and !flag)
- {
- found = i;
- flag = true;
- }
- }
- if (flag)
- {
- for (ll i = 0; i < 3; i++)
- {
- bool test = test_arthi(found - i), test2 = test_arthi(found + i), test3 = test_arthi(i);
- if (test or test3 or (test2 and i != 0))
- {
- cout << "YES" << '\n';
- return;
- }
- }
- }
- else if (!flag)
- {
- cout << "YES" << '\n';
- return;
- }
- cout << "NO" << '\n';
- }
- int main()
- {
- Warding();
- int t = 1;
- cin >> t;
- while (t--)
- {
- solve();
- }
- Time
- }
Add Comment
Please, Sign In to add comment