Pagini recente » Cod sursa (job #665886) | Cod sursa (job #1115320) | Cod sursa (job #1529284) | Cod sursa (job #32637) | Cod sursa (job #330472)
Cod sursa(job #330472)
#include<fstream>
using namespace std;
int contor=0;int n;
char linie[10001];
void merge(int in,int mij,int sf)
{char l[5001],r[5001];int p;
for(int i=1;i<=mij-in+1;i++)
l[i]=linie[i+in-1];
for(int j=1;j<=sf-mij;j++)
{r[j]= linie[j+mij];
for(int i=1;i<=mij-in+1;i++)
if(l[i]>r[j]) {contor++;}
}
int k1=1,k2=1,pivot=in;
while(k1<=(mij-in+1) && k2<=(sf-mij))
{if(l[k1]<r[k2]) {linie[pivot]=l[k1];k1++;}
else {linie[pivot]=r[k2];;k2++;;}
pivot++;
}
if(k1<=(mij-in+1)) while(k1<=(mij-in+1)) {linie[pivot]=l[k1];k1++;pivot++;}
else while(k2<=(sf-mij)) {linie[pivot]=r[k2];k2++;pivot++;}
}
void mergesort(int in,int sf)
{if(in<sf)
{int mij=(in+sf)/2;
mergesort(in,mij);
mergesort(mij+1,sf);
merge(in,mij,sf);
}
}
int main()
{ifstream in("litere.in");
ofstream out("litere.out");
in>>n;in.getline(linie,10001);
in.getline(linie,10001);
mergesort(0,n-1);
out<<contor;
return 0;}