问题遇到的现象
OJ运行超时: Time Limit Exceeded
条件
内存限制:64 MiB
时间限制:1000 ms
标准输入输出
题目类型:传统
评测方式:文本比较
题目
题目描述
设A[1..n]是一个包含N个数的数组。如果在i〈 j的情况下,有A[i] 〉a[j],则(i,j)就称为A中的一个逆序对。
使用 归并排序 可以用O(nlogn)的时间解决统计逆序对个数的问题 。
输入格式
第1行:1个整数N表示排序元素的个数。(1≤N≤100000) 第2行:N个用空格分开的整数,每个数在小于100000
输出格式
1行:仅一个数,即序列中包含的逆序对的个数
样例
样例输入
3
1 3 2
样例输出
1
问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
int main()
{
long long NUM,l = 0,O,P = 0;
cin >> O;
int num[O];
for(int i = 0;i < O;i++)
{
cin >> NUM;
num[i] = NUM;
for(int v = i - 1;v > -1;v--)
{
if(num[i] < num[v])
P++;
}
}
cout << P;
}
```
运行结果及报错内容
报错0:Exited with return code 0
结果正常
运行超过OJ时间限制
我的解答思路和尝试过的方法
1)定义数组存储集合
2)比对集合中符合条件元素的大小
3)输出
我想要达到的结果
OJ Accept