Pagini recente » Cod sursa (job #2189141) | Cod sursa (job #992012) | Cod sursa (job #895646) | Cod sursa (job #2358630) | Cod sursa (job #2685995)
#include <iostream>
using namespace std;
# define MAX_L 100000
# define MAX_H 10
int cmmdc (int v[], int n){
int cmmdc = v[1];
for (int i = 2; i <= n; i++){
int aux = v[i];
if (v[i] == 1){
cmmdc = 1;
break;
}
while (aux != cmmdc){
if (aux > cmmdc){
aux -=cmmdc;
} else {
cmmdc -=aux;
}
}
}
return cmmdc;
}
int sum (int v[], int n){
int s = 0;
for (int i = 1; i <= n; i++){
s += v[i];
}
return s;
}
int nrBlocuri (int v[], int n){
int noZeros = 0;
int array[MAX_L];
int index = 0;
for (int i = 1 ; i <= n; i++){
if (v[i] == 0){
noZeros++;
} else {
if (noZeros != 0) {
index++;
array[index] = noZeros;
}
noZeros = 0;
}
}
if (noZeros != 0){
index++;
array[index] = noZeros;
}
int bloc = cmmdc (array, index);
int res = sum(array, index) / bloc;
return res;
}
int main() {
int L , H;
cin >> L >> H;
int matrix[MAX_L][MAX_H];
int v;
for (int i = 1; i <= L; i++){
cin >> v;
int rand = 1;
for (int linie = H; linie > (H - v); linie--){
matrix[linie][i] = rand;
rand++;
}
for (int linie = 1; linie <= H-v; linie++){
matrix[linie][i] = 0;
}
}
int s = 0;
for (int i = 1; i <= H; i++){
s += nrBlocuri(matrix[i], L);
}
cout << s;
return 0;
}