Submission #883784


Source Code Expand

#include <bits/stdc++.h>

typedef long long ll;
typedef unsigned long long ull;

#define FOR(i,a,b) for(int (i)=(a);i<(b);i++)
#define REP(i,n) FOR(i,0,n)
#define RANGE(vec) (vec).begin(),(vec).end()

using namespace std;


class C_change_seats {
public:
    void solve(void) {
        int N,M;
        cin>>N>>M;

        ll x0,a,p;
        cin>>x0>>a>>p;

        if ( a % p == 0 )
        {
            if ( x0 < p )
                cout<<0<<endl;
            else  // table[0][0] のみ x0, 残りは x0%p になるケース
                cout<<(N-1)*2<<endl;// table[0][0] と table[n-1][0] を交換
            return;
        }

        vector<vector<ll>> table(N,vector<ll>(M));
        vector<vector<tuple<int,int>>> G(N);
        vector<ll> xs(N*M);

        ll  k = 0;
        ll  x = 0;
        REP(i,N)
        REP(j,M)
        {
            if (k == 0)
                x = table[i][j] = x0;
            else
                x = table[i][j] = (x+a)%p;
            xs[k++] = x;
        }
        sort(RANGE(xs));
        map<ll,ll> x2n;


        // O(N*M*log(N*M))
        // 成績を 0...N*M-1 までの連番にしておく
        // p が素数かつ N*M <= p なのでおなじ成績は存在しない
        k = 0;
        for (auto x : xs)
            x2n[x] = k++;

        // G[i][*]<G[j][*] の条件から
        // i 行目にいるべきは i==x/M なる x
        REP(i,N)
        REP(j,M)
            G[x2n[table[i][j]]/M].emplace_back(j,i);

        // おなじ行内部では入力順を保つような順番が最適のはず
        REP(i,N)
        {
            assert((int)G[i].size()==M);
            sort(RANGE(G[i]));
        }
        ll ret = 0;
        REP(i,N)
        REP(j,M)
        {
            int k,l;
            tie(l,k) = G[i][j];
            ret += abs(k-i)+abs(l-j);
        }
        cout<<ret<<endl;
    }
};

#if 1
int main(int argc, char *argv[])
{
        ios::sync_with_stdio(false);
        auto obj = new C_change_seats();
        obj->solve();
        delete obj;
        return 0;
}
#endif

Submission Info

Submission Time
Task C - 席替え
User shifth
Language C++11 (GCC 4.8.1)
Score 100
Code Size 2151 Byte
Status AC
Exec Time 73 ms
Memory 1820 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 79
Set Name Test Cases
All case_01.txt, case_02.txt, case_03.txt, case_04.txt, case_05.txt, case_06.txt, case_07.txt, case_08.txt, case_09.txt, case_10.txt, case_11.txt, case_12.txt, case_13.txt, case_14.txt, case_15.txt, case_16.txt, case_17.txt, case_18.txt, case_19.txt, case_20.txt, case_21.txt, case_22.txt, case_23.txt, case_24.txt, case_25.txt, case_26.txt, case_27.txt, case_28.txt, case_29.txt, case_30.txt, case_31.txt, case_32.txt, case_33.txt, case_34.txt, case_35.txt, case_36.txt, case_37.txt, case_38.txt, case_39.txt, case_40.txt, case_41.txt, case_42.txt, case_43.txt, case_44.txt, case_45.txt, case_46.txt, case_47.txt, case_48.txt, case_49.txt, case_50.txt, case_51.txt, case_52.txt, case_53.txt, case_54.txt, case_55.txt, case_56.txt, case_57.txt, case_58.txt, case_59.txt, case_60.txt, case_61.txt, case_62.txt, case_63.txt, case_64.txt, case_65.txt, case_66.txt, case_67.txt, case_68.txt, case_69.txt, case_70.txt, case_71.txt, case_72.txt, case_73.txt, case_74.txt, case_75.txt, case_76.txt, case_77.txt, case_78.txt, case_79.txt
Case Name Status Exec Time Memory
case_01.txt AC 30 ms 1000 KiB
case_02.txt AC 27 ms 1180 KiB
case_03.txt AC 28 ms 1000 KiB
case_04.txt AC 26 ms 920 KiB
case_05.txt AC 27 ms 924 KiB
case_06.txt AC 26 ms 920 KiB
case_07.txt AC 27 ms 920 KiB
case_08.txt AC 27 ms 916 KiB
case_09.txt AC 28 ms 1052 KiB
case_10.txt AC 30 ms 1180 KiB
case_11.txt AC 28 ms 924 KiB
case_12.txt AC 31 ms 1264 KiB
case_13.txt AC 28 ms 872 KiB
case_14.txt AC 26 ms 1052 KiB
case_15.txt AC 32 ms 1428 KiB
case_16.txt AC 30 ms 1388 KiB
case_17.txt AC 29 ms 1164 KiB
case_18.txt AC 30 ms 1224 KiB
case_19.txt AC 37 ms 1644 KiB
case_20.txt AC 29 ms 1176 KiB
case_21.txt AC 31 ms 1240 KiB
case_22.txt AC 26 ms 920 KiB
case_23.txt AC 32 ms 1440 KiB
case_24.txt AC 33 ms 1304 KiB
case_25.txt AC 26 ms 1016 KiB
case_26.txt AC 30 ms 1308 KiB
case_27.txt AC 28 ms 1180 KiB
case_28.txt AC 25 ms 920 KiB
case_29.txt AC 29 ms 1308 KiB
case_30.txt AC 31 ms 1432 KiB
case_31.txt AC 26 ms 924 KiB
case_32.txt AC 26 ms 924 KiB
case_33.txt AC 30 ms 1304 KiB
case_34.txt AC 30 ms 1308 KiB
case_35.txt AC 26 ms 1008 KiB
case_36.txt AC 28 ms 1128 KiB
case_37.txt AC 26 ms 924 KiB
case_38.txt AC 24 ms 876 KiB
case_39.txt AC 73 ms 1436 KiB
case_40.txt AC 28 ms 1128 KiB
case_41.txt AC 24 ms 1048 KiB
case_42.txt AC 27 ms 920 KiB
case_43.txt AC 28 ms 1000 KiB
case_44.txt AC 26 ms 880 KiB
case_45.txt AC 30 ms 1136 KiB
case_46.txt AC 27 ms 1124 KiB
case_47.txt AC 32 ms 1520 KiB
case_48.txt AC 28 ms 924 KiB
case_49.txt AC 27 ms 916 KiB
case_50.txt AC 35 ms 1768 KiB
case_51.txt AC 36 ms 1772 KiB
case_52.txt AC 36 ms 1772 KiB
case_53.txt AC 33 ms 1768 KiB
case_54.txt AC 35 ms 1772 KiB
case_55.txt AC 35 ms 1780 KiB
case_56.txt AC 34 ms 1772 KiB
case_57.txt AC 36 ms 1772 KiB
case_58.txt AC 35 ms 1776 KiB
case_59.txt AC 35 ms 1768 KiB
case_60.txt AC 34 ms 1772 KiB
case_61.txt AC 34 ms 1820 KiB
case_62.txt AC 33 ms 1768 KiB
case_63.txt AC 35 ms 1772 KiB
case_64.txt AC 34 ms 1776 KiB
case_65.txt AC 34 ms 1776 KiB
case_66.txt AC 36 ms 1776 KiB
case_67.txt AC 36 ms 1768 KiB
case_68.txt AC 34 ms 1768 KiB
case_69.txt AC 35 ms 1768 KiB
case_70.txt AC 26 ms 924 KiB
case_71.txt AC 24 ms 920 KiB
case_72.txt AC 26 ms 924 KiB
case_73.txt AC 26 ms 924 KiB
case_74.txt AC 26 ms 856 KiB
case_75.txt AC 25 ms 996 KiB
case_76.txt AC 26 ms 920 KiB
case_77.txt AC 26 ms 920 KiB
case_78.txt AC 25 ms 924 KiB
case_79.txt AC 26 ms 924 KiB
sample_1.txt AC 25 ms 920 KiB
sample_2.txt AC 25 ms 920 KiB
sample_3.txt AC 25 ms 920 KiB