Página Principal

MC521-1s2014

MC621-2s2014

MC521-1s2015

MC621-2s2015

MC521-1s2016

Conteúdo

Área Reservada

edit sidebar

CF 124 B

Autor: Matheus Bellomo

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

int v[11][11];
int permut[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int p10[8];
int n, k;
int minel, maxel, mindif;
int inf = 99999999;

// pow(10, k-1-permut[j])

int get_diff(){
  int a;

  minel = inf; maxel = 0;
  for(int i = 0; i < n; i++){
    a = 0;
    for(int j = 0; j < k; j++)
      a += v[i][j] * p10[k-1-permut[j]];
    minel = min(a, minel);
    maxel = max(a , maxel);
  }
  mindif = maxel - minel;

  while(next_permutation(permut, permut + k)){
    minel = inf; maxel = 0;
    for(int i = 0; i < n; i++){
      a = 0;
      for(int j = 0; j < k; j++)
        a += v[i][j] * p10[k-1-permut[j]];
      minel = min(a, minel);
      maxel = max(a , maxel);
    }
    mindif = min(maxel-minel, mindif);
  }

  return mindif;
}

int main(){

  p10[0] = 1;
  for(int i = 1; i <= 8; i++)
    p10[i] = p10[i-1]*10;

  scanf("%d %d", &n, &k);
  for(int i = 0; i < n; i++){
    int num;
    scanf("%d", &num);
    for(int j = 0; j < k; j++){
      v[i][j] = num%10;
      num /= 10;
    }
  }

  printf("%d\n", get_diff());

  return 0;
}