Cod sursa(job #248160)

Utilizator drag0s93Mandu Dragos drag0s93 Data 24 ianuarie 2009 23:53:06
Problema Litere Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
char c[257],v[10000],v1[10000];
int n;
void citire()
{
	int j=1;
	cin>>n;
	for(int i=1;i<=n+1;++i)
		cin.get(c[i]);
	for(int i=97;i<=122;++i && ++j)
		v[j]=i;
}
void cautare()
{
	int p=2;
	for(int j=1;j<=25;++j)
		for(int i=2;i<=n+1;++i)
			if(v[j]==c[i])
			{
				v1[p]=c[i];
				++p;
			}
}
void cautare_2()
{
	char aux,aux1;
	int mutari=0,j=2,cp;
	for(int i=2;i<=n+1;++i)
		for(;j<=i;j++)
		{
			if(c[j]!=v1[i])
			{
				for(int p=j+1;p<=n+1;++p)
					if(c[p]==v1[i])
					{
						if(p==j+1)
						{
							aux=c[j];
							c[j]=v1[i];
							c[p]=aux;
						}
						else if(p>j+1)
						{
							aux=c[j];
							c[j]=v1[i];
							c[p]=0;
							cp=p;
							for(int r=p-1;r>=j;--r)
								c[cp--]=c[r];
							c[j+1]=aux;
						}
						mutari+=p-j;
						break;
					}
			}
		}
	cout<<mutari;
}
int main()
{
	freopen("litere.in","r",stdin);
	freopen("litere.out","w",stdout);
	citire();
	cautare();
	cautare_2();
	return 0;
}