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 |
|
| 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 |