poj2299自己运行正确,提交却是wrong answer,希望好心人帮忙找一下原因。万分感谢
本帖最后由 勿语静候 于 2014-10-8 22:04 编辑题目大意:给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列。
Input59 1 0 5 4
31 2 3
Output
6
0</blockquote></div></div><p></p><div><div class="blockcode"><blockquote>#include<iostream>
using namespace std;
#define MAXSIZE 500000
long long t;
void merging(int* listL , int listL_size , int* listR , int listR_size)
{
int i , j , k;
i = j = k =0;
int temp;
while( i < listL_size && j < listR_size)
{
if( listL > listR)
{
temp = listR;
t+=listL_size - i;
}
else
{
temp = listL;
}
}
while(i < listL_size)
{
temp = listL;
}
while(j < listR_size)
{
temp = listR;
}
for(int m = 0; m < (listL_size + listR_size);m++)
{
listL = temp;
}
}
void mergeSort(int* k , int n)
{
if(n > 1)
{
int *listL = k;
int listL_size = n / 2;
int *listR = k + n / 2;
int listR_size = n - listL_size;
mergeSort(listL , listL_size);
mergeSort(listR , listR_size);
merging(listL , listL_size , listR, listR_size);
}
}
int main()
{
int n;
while(cin >> n)
{
t = 0;
int* a = new int;
for(int i = 0 ; i < n ; i++)
{
cin >> a;
}
mergeSort(a,n);
cout << t << endl;
delete a;
}
return 0;
}
页:
[1]