【题解】考分鄙视

匿名 (未验证) 提交于 2019-12-02 23:49:02

题目描述

输入格式

输出格式

输入样例

4

1 3 3 5

输出样例

3

题解

#include <iostream> #include <cstdio>  #define MAX_N 100000  using namespace std;  int n; int a[MAX_N | 1]; long long ans;  void Merge_Sort(int lt, int rt) {     if(lt == rt) return;     int mid = lt + rt >> 1;     Merge_Sort(lt, mid);     Merge_Sort(mid + 1, rt);     int i = lt, j = mid + 1;     int b[MAX_N | 1], cnt = 0;     while(i <= mid && j <= rt)     {         if(a[i] >= a[j]) b[++cnt] = a[i++];         else ans += mid - i + 1, b[++cnt] = a[j++];     }     while(i <= mid) b[++cnt] = a[i++];     while(j <= rt) b[++cnt] = a[j++];     for(register int i = lt; i <= rt; ++i)     {         a[i] = b[i - lt + 1];     }     return; }  int main() {     scanf("%d", &n);     for(register int i = 1; i <= n; ++i)     {         scanf("%d", &a[i]);         a[i] += n - i; // 重点语句     }     Merge_Sort(1, n);     printf("%lld", ans % 12345);     return 0; }
参考程序

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!