Pagini recente » Cod sursa (job #2637411) | Cod sursa (job #1951499) | Cod sursa (job #663283) | Cod sursa (job #2873467) | Cod sursa (job #3191562)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("litere.in");
ofstream fout("litere.out");
char a[100003], b[100003];
int nr;
void Interclasare(int st,int m, int dr)
{
int j,k,i;
i = st;
k = st;
j = m+1;
while( i <= m && j <= dr)
if ( a[i] > a[j])
{
b[k ++] = a[j++];
nr +=(m-i+1);
}
else b[k++] = a[i++];
while ( i <= m) b[k++] = a[i++];
while ( j <= dr) b[k++] = a[j++];
for(i = st;i <= dr; i ++)
a[i] = b[i];
}
void Mergesort(int st,int dr)
{
if ( dr - st >= 1)
{
int m = (st+dr)/2;
Mergesort(st,m);
Mergesort(m+1,dr);
Interclasare(st,m,dr);
}
}
int main()
{
int i,n;
fin >> n;
for ( i = 1; i <= n; i++)
fin >> a[i];
Mergesort(1,n);
fout << nr;
return 0;
}