Submission #1322460

#TimeUsernameProblemLanguageResultExecution timeMemory
1322460hackstarPoi (IOI09_poi)C++20
100 / 100
203 ms31940 KiB
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast,O3,unroll-loops")

using namespace std;

#define pb emplace_back
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define aura 1e18
#define pii pair<int,int>

void die(string s){ puts(s.c_str()); exit(0);}

#define int long long
const int mod=1e9+7;

int binpow(int a,int b)
{
        int res=1;
        while(b)
        {
                if(b&1)
                        res=res*a%mod;
                b>>=1;
                a=a*a%mod;
        }
        return res%mod;
}

int inv(int x)
{
        return binpow(x,mod-2)%mod;
}

void solve()
{
        int n,t,p;
        cin>>n>>t>>p;
        vector<vector<int>>a(n,vector<int>(t));
        for(auto &x:a)
                for(int &y:x)
                        cin>>y;
        p--;
        vector<int>cnt(t,n);
        vector<int>cntt(n);
        vector<int>s(n);
        for(int i=0;i<n;i++)
                for(int j=0;j<t;++j)
                        if(a[i][j])
                                cnt[j]--,cntt[i]++;

        vector<tuple<int,int,int>>ans;
        for(int i=0;i<n;++i)
        {
                for(int j=0;j<t;++j)
                {
                        if(a[i][j])
                                s[i]+=cnt[j];
                }
                ans.pb(s[i],cntt[i],i);
        }
        sort(ALL(ans),[&](auto x,auto y){
                int x1=get<0>(x);
                int x2=get<1>(x);
                int x3=get<2>(x);
                int y1=get<0>(y);
                int y2=get<1>(y);
                int y3=get<2>(y);
                if(x1==y1)
                {
                        if(x2==y2)
                                return x3<y3;
                        else
                                return x2>y2;
                }
                else
                        return x1>y1;
        });
        for(int i=0;i<n;i++)
                if(get<2>(ans[i])==p)
                {
                        cout<<s[p]<<' '<<i+1<<'\n';
                        return;
                }
}

signed main()
{
        ios_base::sync_with_stdio(false);
        cin.tie(0); 
        cout.tie(0);
        int t=1;
        #ifdef IOI
                freopen("test.in","r",stdin);
                freopen("test.out","w",stdout);
        #endif
        // cin>>t;
        while(t--)
                solve();
        return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...