ioi

IOI solution implementations

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
using ll = long long;
using ii = pair<int, int>;
constexpr int MX = 2005;

bool B[MX][MX];
int pt[MX], sc[MX], sv[MX], rk[MX];

int main() {
	if (fopen("in", "r")) freopen("in", "r", stdin), freopen("out", "w", stdout);
	ios_base::sync_with_stdio(0), cin.tie(0);

	int N, T, P; cin >> N >> T >> P;
	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < T; ++j) cin >> B[i][j];
	}

	for (int i = 0; i < T; ++i) {
		pt[i] = N;
		for (int j = 0; j < N; ++j) pt[i] -= B[j][i];
	}

	for (int i = 0; i < N; ++i)
		for (int j = 0; j < T; ++j)
			if (B[i][j]) sc[i] += pt[j], ++sv[i];
	
	for (int i = 0; i < N; ++i) rk[i] = i;
	
	sort(rk, rk+N, [&](int a, int b) {
		if (sc[a] == sc[b]) {
			if (sv[a] == sv[b]) return a < b;
			return sv[a] > sv[b];
		}
		return sc[a] > sc[b];
	});

	for (int i = 0; i < N; ++i) {
		if (rk[i] == P-1) {
			cout << sc[rk[i]] << ' ' << i+1;
			return 0;
		}
	}
}