답안 #211883

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
211883 2020-03-21T15:09:31 Z mode149256 Poi (IOI09_poi) C++14
5 / 100
282 ms 23908 KB
/*input
5 3 2
0 0 1
1 1 0
1 0 0
1 1 0
1 1 0
*/
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;

typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef vector<pi> vpi;
typedef vector<vpi> vpii;
typedef vector<pl> vpl;
typedef vector<cd> vcd;
typedef vector<pd> vpd;
typedef vector<bool> vb;
typedef vector<vb> vbb;
typedef std::string str;
typedef std::vector<str> vs;

#define x first
#define y second
#define debug(...) cout<<"["<<#__VA_ARGS__<<": "<<__VA_ARGS__<<"]\n"

const int MOD = 1000000007;
const ll INF = std::numeric_limits<ll>::max();
const int MX = 100101;
const ld PI = 3.14159265358979323846264338327950288419716939937510582097494L;

template<typename T>
pair<T, T> operator+(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x + b.x, a.y + b.y); }
template<typename T>
pair<T, T> operator-(const pair<T, T> &a, const pair<T, T> &b) { return pair<T, T>(a.x - b.x, a.y - b.y); }
template<typename T>
T operator*(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.x + a.y * b.y); }
template<typename T>
T operator^(const pair<T, T> &a, const pair<T, T> &b) { return (a.x * b.y - a.y * b.x); }

template<typename T>
void print(vector<T> vec, string name = "") {
	cout << name;
	for (auto u : vec)
		cout << u << ' ';
	cout << '\n';
}

struct ppl {
	int sum;
	int kiek;
	int id;
};

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int N, T, P;
	cin >> N >> T >> P;

	vii sk(N, vi(T));
	vi neis(T, 0);

	for (int i = 0; i < N; ++i)
	{
		for (int j = 0; j < T; ++j)
		{
			cin >> sk[i][j];
			neis[j] += !sk[i][j];
		}
	}

	vector<ppl> people(N);

	for (int i = 0; i < N; ++i)
	{
		auto &p = people[i];
		p.id = i + 1;
		p.sum = p.kiek = 0;

		for (int j = 0; j < T; ++j)
		{
			if (sk[i][j]) {
				p.kiek++;
				p.sum += neis[j];
			}
		}
	}

	sort(people.begin(), people.end(), [](const ppl a, const ppl b) {
		return a.sum > b.sum or (a.sum == b.sum and a.kiek > b.kiek) or
		       (a.sum == b.sum and a.kiek == b.kiek and a.id < b.id);
	});

	for (int i = 0; i < N; ++i)
	{
		if (people[i].id == P) {
			printf("%d %d\n", people[i].sum, people[i].kiek);
			break;
		}
	}
}

/* Look for:
* special cases (n=1?)
* overflow (ll vs int?)
* the exact constraints (multiple sets are too slow for n=10^6 :( )
* array bounds
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Incorrect 5 ms 256 KB Output isn't correct
3 Incorrect 4 ms 384 KB Output isn't correct
4 Correct 4 ms 384 KB Output is correct
5 Incorrect 5 ms 384 KB Output isn't correct
6 Incorrect 5 ms 384 KB Output isn't correct
7 Incorrect 5 ms 384 KB Output isn't correct
8 Incorrect 5 ms 384 KB Output isn't correct
9 Incorrect 6 ms 384 KB Output isn't correct
10 Incorrect 8 ms 512 KB Output isn't correct
11 Incorrect 13 ms 1024 KB Output isn't correct
12 Incorrect 18 ms 1536 KB Output isn't correct
13 Incorrect 47 ms 3832 KB Output isn't correct
14 Incorrect 67 ms 5368 KB Output isn't correct
15 Incorrect 126 ms 9208 KB Output isn't correct
16 Incorrect 117 ms 10104 KB Output isn't correct
17 Incorrect 168 ms 14472 KB Output isn't correct
18 Incorrect 204 ms 16508 KB Output isn't correct
19 Incorrect 243 ms 21628 KB Output isn't correct
20 Incorrect 282 ms 23908 KB Output isn't correct