Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS
- # include <intrin.h>
- # define __builtin_popcount __popcnt
- #endif
- #define _USE_MATH_DEFINES
- #include <stdio.h>
- #include <iostream>
- #include <vector>
- #include <unordered_map>
- #include <stack>
- #include <math.h>
- #include <map>
- #include <functional>
- #include <algorithm>
- #include <queue>
- #include <set>
- using namespace std;
- int main()
- {
- #if defined(_DEBUG)
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- cin.tie(NULL);
- ios_base::sync_with_stdio(false);
- cout.tie(NULL);
- int n;
- cin >> n;
- vector<long long> nums(n);
- for (int i = 0; i < n; i++)
- {
- cin >> nums[i];
- }
- vector<unordered_map<long long, int>> vx(n);
- for (int i = 0; i < n; i++)
- {
- for (int j = i + 1; j < n; j++)
- {
- long long dist = nums[j] - nums[i];
- vx[i][dist] = j;
- }
- }
- int ans = 2;
- for (int i = 0 ;i <n; i++)
- {
- unordered_map<long long, int>& m = vx[i];
- for (auto& kv : m)
- {
- int tmp = 0;
- int ni = i;
- long long li = kv.first;
- while (ni >= 0)
- {
- tmp++;
- int nni = -1;
- auto ptr = vx[ni].find(li);
- if (ptr != vx[ni].end())
- {
- nni = ptr->second;
- ptr->second = -1;
- }
- ni = nni;
- }
- ans = max(ans, tmp);
- }
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement