Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define IO_OP std::ios::sync_with_stdio(0); std::cin.tie(0);
- #define F first
- #define S second
- #define V vector
- #define PB push_back
- #define MP make_pair
- #define EB emplace_back
- #define ALL(v) (v).begin(), (v).end()
- #define debug(x) cerr << "Line(" << __LINE__ << ") -> " << #x << " is " << x << endl
- using namespace std;
- typedef long long ll;
- typedef pair<int, int> pi;
- typedef V<int> vi;
- const int INF = 1e9 + 7, N = 1e5 + 7;
- double a[N][30], sum[N], mean[N], d[N];
- signed main()
- {
- IO_OP;
- int n, m, b;
- cin >> n >> m >> b;
- for(int i = 0; i < n; i++) {
- for(int j = 0; j < m; j++) {
- cin >> a[i][j];
- sum[j] += a[i][j];
- }
- }
- for(int i = 0; i < m; i++) {
- mean[i] = sum[i] / n;
- double tt = 0;
- for(int j = 0; j < n; j++) {
- tt += (a[j][i] - mean[i]) * (a[j][i] - mean[i]);
- }
- tt /= (n - 1);
- d[i] = tt;
- }
- auto go = [&](V<double> c) -> double {
- assert(c.size() == m);
- double p = 0;
- for(int j = 0; j < n; j++) {
- if(abs(mean[j] - c[j]) > 2 * d[j]) {
- p -= 1.30102999566; // log 0.05
- } else {
- p -= 0.02227639471; // log 0.95
- }
- }
- return p;
- };
- V<pair<double, int>> ans;
- for(int i = 0; i < n; i++) {
- V<double> c(m);
- for(int j = 0; j < m; j++)
- c[j] = a[i][j];
- double p1 = go(c);
- reverse(ALL(c));
- double p2 = go(c);
- ans.EB(p1 - p2, i);
- }
- sort(ALL(ans));
- for(int i = 0; i < b; i++)
- cout << ans[i].S + 1 << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement