답안 #158084

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
158084 2019-10-14T16:59:45 Z GoldNextYear Hokej (COCI17_hokej) C++14
72 / 120
638 ms 40176 KB
    #define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
    #include <bits/stdc++.h>
    using namespace std;
    #define sqr 340
    #define mid (l+r)/2
    #define pb push_back
    #define ppb pop_back
    #define fi first
    #define se second
    #define lb lower_bound
    #define ub upper_bound
    #define ins insert
    #define era erase
    #define C continue
    #define mem(dp,i) memset(dp,i,sizeof(dp))
    #define mset multiset
    typedef long long ll;
    typedef long double ld;
    typedef pair<int,int> pi;
    typedef pair<ll,ll> pll;
    typedef vector<int> vi;
    typedef vector<ll> vll;
    typedef vector<pi> vpi;
    typedef vector<pll> vpll;
    const ll mod=1000000007;
    const ll mod2=998244353;
    const ll inf=1e18*4;
    const ld pai=acos(-1);
    ll m,n,crnti=1,crntj=1;
    pll a[500009],b[500009];
    ll ans[7][500009],done[500009];
    void put(ll id){
            ll xxx=b[id].se;
      		if(xxx==m)done[id]=1;
            while(xxx-- && crnti<=6){
                    ans[crnti][crntj]=id;
              		crntj++;
                    if(crntj==m+1)crntj=1,crnti++;
            }
    }
    int main(){
            cin>>m>>n;
            for(int i=0;i<n;i++){
                    cin>>a[i].fi>>b[i].se;
                    b[i].fi=a[i].fi;
                    a[i].se=i;
            }
            sort(a,a+n);
            for(int i=n-1;i>=0;i--){
                    put(a[i].se);
            }
            ll sum=0;
            for(int i=1;i<=6;i++){
                    for(int j=1;j<=m;j++)sum+=b[ans[i][j]].fi;
            }
            cout<<sum<<endl;
            for(int i=1;i<=6;i++)cout<<ans[i][1]+1<<" ";
            cout<<endl;
            vector<pair<ll,pi> > v;
            for(int j=2;j<=m;j++){
                    for(int i=1;i<=6;i++){
                            if(ans[i][j]!=ans[i][j-1] && !done[ans[i][j-1]] && !done[ans[i][j]])v.pb({j-1,{ans[i][j-1]+1,ans[i][j]+1}});
                    }
            }
            cout<<v.size()<<endl;
            for(auto u:v)cout<<u.fi<<" "<<u.se.fi<<" "<<u.se.se<<endl;
    }
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 9 ms 760 KB Output is correct
3 Correct 60 ms 24572 KB Output is correct
4 Correct 3 ms 508 KB Output is correct
5 Correct 26 ms 10104 KB Output is correct
6 Correct 9 ms 504 KB Output is correct
7 Incorrect 10 ms 760 KB Output isn't correct
8 Incorrect 117 ms 6336 KB Output isn't correct
9 Incorrect 619 ms 40004 KB Output isn't correct
10 Incorrect 638 ms 40176 KB Output isn't correct