Skip to content

Instantly share code, notes, and snippets.

@rogerioagjr
Last active August 29, 2015 14:22
Show Gist options
  • Save rogerioagjr/6f570b92623f796ba16b to your computer and use it in GitHub Desktop.
Save rogerioagjr/6f570b92623f796ba16b to your computer and use it in GitHub Desktop.
Arquivos
// Arquivos - F1P1 - OBI 2015
// Rogério Júnior
// Complexidade: O(n*log(n))
#include <cstdio> // scanf e printf
#include <algorithm> // sort
using namespace std;
#define MAXN 100100 // defino o valor máximo de n
int n, b, resp, file[MAXN]; // variáveis que vou usar
int main(){
scanf("%d %d", &n, &b); // leio os valores de "n" e "b"
for(int i=1; i<=n; i++) scanf("%d", &file[i]); // leio os tamanhos dos arquivos
sort(file+1, file+n+1); // ordeno o vetor pelo tamanho dos arquivos
int menor=1;; // inicializo menor e maior com os valores 1 e n, respectivamente
// enquanto houver arquivo disponível
for(int maior=n; maior>=menor; maior--){
// aumento o valor de resp, pois o maior arquivo será guardado em uma nova pasta
resp++;
// se couberem dois (o maior e o menor), coloco o menor na mesma pasta
// e digo que o novo menor elemento será o seguinte em "file"
if(file[menor]+file[maior]<=b) menor++;
}
printf("%d\n", resp); // por fim, imprimo a resposta seguida de quebra de linha
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment