Codeforces Gym 100203G Good elements 暴力乱搞
原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf
题解
考虑暴力的复杂度是O(n^3),所以我们需要记录所有的ai+aj,如果当前考虑到了ak,那么就去前面寻找ai,使得ak-ai是我们记录过的和。整个算法的复杂度O(n^2)。
代码
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define MAX_N 5555 #define MAX_A 1000006 using namespace std; bool vis[MAX_A]; int n; int a[MAX_N]; int ans=0; int x=100005; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); for (int j = 0; j < i; j++) { if (vis[a[i] - a[j] + 2 * x]) { ans++; break; } } for (int j = 0; j <= i; j++)vis[a[i] + a[j] + 2 * x] = 1; } printf("%d\n", ans); return 0; }