CodeForces Round #301 Div.2
2015-05-05 23:17
316 查看
今天唯一的成果就是把上次几个人一起开房打的那场cf补一下。
A. Combination Lock
此等水题看一眼样例加上那个配图我就明白题意了,可是手抽没有注释掉freopen,WA了一发。
代码君
A. Combination Lock
此等水题看一眼样例加上那个配图我就明白题意了,可是手抽没有注释掉freopen,WA了一发。
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> using namespace std; typedef long long LL; const int maxn = 200000 + 10; int a[maxn], b[maxn], x[maxn], r[maxn]; LL sum[maxn], s[maxn]; int n, m; inline int lowbit(int x) { return x&(-x); } void add(int x, LL d) { while(x <= m) { s[x] += d; x += lowbit(x); } } LL query(int x) { LL ans = 0; while(x) { ans += s[x]; x -= lowbit(x); } return ans; } int main() { //freopen("in.txt", "r", stdin); cin >> n; for(int i = 1; i <= n; i++) { scanf("%d%d", &a[i], &b[i]); x[i*2-1] = a[i]; x[i*2] = b[i]; } sort(x + 1, x + 1 + n*2); m = unique(x + 1, x + 1 + n*2) - x - 1; for(int i = 1; i <= m; i++) { sum[i] = sum[i - 1] + x[i] - x[i - 1] - 1; r[i] = i; } for(int i = 1; i <= n; i++) { int ta = lower_bound(x + 1, x + 1 + m, a[i]) - x; int tb = lower_bound(x + 1, x + 1 + m, b[i]) - x; swap(r[ta], r[tb]); } LL inv = 0; for(int i = m; i > 0; i--) { inv += query(r[i]); add(r[i], 1); inv += abs(sum[i] - sum[r[i]]); } cout << inv << endl; return 0; }
代码君
相关文章推荐
- Cf 102 Div.2
- Codeforces Round#175 (Div.2) 275A
- CodeforcesRound#191(Div.2)
- CodeForces #200(Div.2) A. Magnets
- codeforces 224 div.2 A. Ksenia and Pan Scales
- Codeforces Round 238 Div.2
- Codeforces (439B) Round #251 (div.2) B题
- Round #189 (Div.2) B. Ping-Pong (Easy Version)
- Codeforces round 244(div.2) D match&catch【字符串hash】
- CodeForces Round #279 (Div.2)
- Codeforces Beta Round #9 (Div.2 Only) C.Hexadecimal's Numbers 二进制思想、技巧题
- CodeForces#285 div.2 题解
- Topcoder SRM 648 Div.2 - A(水), B(枚举),C(DP/构造)
- #292 (div.2) D.Drazil and Tiles
- #297 (div.2) A. Vitaliy and Pie
- #299 (div.2) A. Tavas and Nafas
- #298 (div.2) A. Exam
- #197 (div.2) A. Helpful Maths
- 简单几何(水)BestCoder Round #50 (div.2) 1002 Run
- BestCoder Round #51 (div.2) 1001 找规律+判素数