Ragionamento sbagliato?
#include <iostream>
#include <vector>
using namespace std;
long long N, M, i, j;
vector<vector<double>> P;
vector<double> R;
int main() {
cin >> N >> M;
P.resize(N);
R.resize(N);
for (i=0; i<N; i++)
P[i].resize(M);
for (j=0; j<M; j++)
for (i=0; i<N; i++)
cin >> P[i][j];
double sum = 0;
int t = 1, c = 0;
for (j=0; j<M; j++) {
for (i=0; i<N; i++) {
sum += P[i][j];
}
if((sum*2) == 1000000) {
for (i=0; i<N; i++)
P[i][j] *= 2;
}
else {
for(i=3; i<N, c == 1; i++) {
if((sum*i) == 1000000) {t = i; c = 1;}
}
for (i=0; i<N; i++)
P[i][j] *= t;
}
sum = 0;
t = 1;
c = 0;
}
for (j=0; j<M; j++) {
for (i=0; i<N; i++) {
R[i] += P[i][j];
}
}
for (i=0; i<N; i++)
cout << (int)R[i] / M << " ";
cout << endl;
return 0;
}