Solução: Problema da fragmentação de memória (Arleson Nunes)

From AdonaiMedrado.Pro.Br
Revision as of 23:50, 7 April 2009 by 200.17.147.2 (Talk)

Jump to: navigation, search
using System;
 
namespace Fragmentacao
{
	class MainClass
	{
		public static void Main(string[] args)
		{
 
			Fragmentar();
			Girar();
 
		}
 
		public static void Fragmentar() {
 
			int tamanho = int.Parse(Console.ReadLine());
			int[] memoria = new int[int.Parse(Console.ReadLine())];
			int aux = 0;
			int cont = 0;
 
			for (int i = 0; i < memoria.Length; i++) {
 
				aux = int.Parse(Console.ReadLine());
				if (aux <= tamanho) {
					memoria[cont] = aux;
					cont++;
					tamanho = tamanho - aux;
				}
 
			}
 
			int liberacoes = int.Parse(Console.ReadLine());
			int posicao = 0;
 
			for (int j = 0; j < liberacoes; j++) {
 
				posicao = int.Parse(Console.ReadLine());
				if (memoria[posicao] > tamanho) {
					tamanho = memoria[posicao];
				}
				memoria[posicao] = 0;
 
			}
 
			Console.WriteLine(tamanho);
 
		}
 
		public static void Girar() {
 
			string S1 = Console.ReadLine();
			string S2 = Console.ReadLine();
			string aux1 = String.Empty;
			string aux2 = String.Empty;
 
			if (S1.Length != S2.Length) {
				Console.WriteLine(0);
			}
			else if (S1 == S2) {
				Console.WriteLine(1);
			}
			else {
				int cont = 0;
				bool flag = false; 
				while (cont < S1.Length && flag==false) {
					aux1 = S1.Substring(1, S1.Length - 1);
					aux2 = S1.Substring(0, 1);
					S1 = aux1 + aux2;
					if (S1 == S2) {
						flag = true;
					}
					cont++;
				}
				if (flag == true) {
					Console.WriteLine(1);
				}
				else {
					Console.WriteLine(0);
				}
			}	
 
		}
 
	}
}