#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")
using namespace __gnu_pbds;
#define ordered_set tree<pair<int, int>, null_type,less<pair<int, int>>, rb_tree_tag,tree_order_statistics_node_update>
#define ll long long
#define MOD 1000000007
#define MAXN 2e5
#define SIZE 314
#define pb push_back
using namespace std;
ll power(ll a, ll b){
if (b == 0) return 1;
ll res = power(a, b / 2);
// if (b % 2 == 1) return res * res % MOD * a % MOD;
// return res * res % MOD;
if (b % 2 == 1) return res * res * a;
return res * res;
}
bool sortCol(vector<int> &a, vector<int> &b){
if (a[0] == b[0]){
if (a[1] == b[1]){
return a[2] < b[2];
}
return a[1] > b[1];
}
return a[0] > b[0];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, t, p;
cin >> n >> t >> p;
vector<int> incorrect(t + 1, 0);
vector<vector<int>> solved(n + 1, vector<int>(t + 1));
for (int i = 1; i <= n; i++){
for (int j = 1; j <= t; j++){
cin >> solved[i][j];
if (solved[i][j] == 0){
incorrect[j]++;
}
}
}
vector<vector<int>> points(n + 1, vector<int>(3, 0));
for (int i = 1; i <= n; i++){
points[i] = {0, 0, i};
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= t; j++){
if (solved[i][j] == 1){
points[i][1]++;
points[i][0] += incorrect[j];
}
}
}
sort(points.begin() + 1, points.end(), sortCol);
for (int i = 1; i <= n; i++){
if (points[i][2] == p){
cout << points[i][0] << " " << i << "\n";
break;
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |