<每日一题> Day7:CodeForces-1166C.A Tale of Two Lands (二分 + 排序)
参考代码:
#include <cstdio> #define mid ((l + r) / 2) #include <algorithm> using namespace std; const int maxn = 200000 + 5, maxvalue = 1e9; int n, value[maxn]; int main() { scanf("%d", &n); for(int i = 0; i < n; i ++) { scanf("%d", &value[i]); if(value[i] < 0) value[i] = - value[i]; } sort(value, value + n); long long ans = 0; int l, r; for(int i = 0; i < n; i ++) { l = i + 1, r = n - 1; while(l <= r) { if(2 * value[i] >= value[mid]) l = mid + 1; else r = mid - 1; } ans += (l - i - 1); } printf("%lld\n", ans); return 0; }
时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面……
没有谁生来就是神牛,而千里之行,始于足下!