C++の練習を兼ねて, AtCoder Regular Contest 133 の 問題C (Row Column Sums) を解いてみた.
■感想.
1. 問題Cは, 方針が見えなかったので, 解説を参考に実装して, AC版に到達できたと思う.
2. 個人的には, 解説のロジックで, 計算できてしまうことが, 非常に不思議な印象を受けた.
3. 引き続き, 時間を見つけて, 過去問の学習を進めていきたいと思う.
本家のサイト AtCoder Regular Contest 133 解説 の 各リンク を ご覧下さい.
■C++版プログラム(問題C/AC版).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// 解き直し. // https://atcoder.jp/contests/arc133/editorial/3282 // C++(GCC 9.2.1) #include <bits/stdc++.h> using namespace std; using LL = long long; #define repex(i, a, b, c) for(int i = a; i < b; i += c) #define repx(i, a, b) repex(i, a, b, 1) #define rep(i, n) repx(i, 0, n) #define repr(i, a, b) for(int i = a; i >= b; i--) int main(){ // 1. 入力情報. int H, W; LL K; scanf("%d %d %lld", &H, &W, &K); LL a, b, ta = 0, tb = 0, C = 0, D = 0; rep(i, H){ scanf("%lld", &a); ta += a; C += ((K - 1) * (LL)W - a) % K; } rep(i, W){ scanf("%lld", &b); tb += b; D += ((K - 1) * (LL)H - b) % K; } // 2. 例外. if(ta % K != tb % K){ puts("-1"); return 0; } // 3. 出力. printf("%lld\n", (LL)H * (LL)W * (K - 1) - max(C, D)); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
[入力例] 2 4 3 0 2 1 2 2 0 [出力例] 11 ※AtCoderのテストケースより [入力例] 3 3 4 0 1 2 1 2 3 [出力例] -1 ※AtCoderのテストケースより [入力例] 3 5 7 3 4 5 3 1 3 2 3 [出力例] 75 [入力例] 31 41 59 26 5 35 8 9 7 9 32 38 46 26 43 38 32 7 9 50 28 8 41 9 7 16 9 39 9 37 5 10 58 20 9 7 4 9 44 5 9 23 0 7 8 16 4 0 6 28 6 20 8 9 9 8 6 28 0 34 8 25 3 4 2 11 7 0 6 7 9 8 2 14 8 [出力例] 72873 [入力例] 123 234 345 309 226 171 216 1 176 264 188 212 318 50 40 92 124 29 320 297 338 251 26 133 271 90 155 217 252 212 136 43 247 141 141 18 290 91 176 239 47 120 326 182 62 18 149 18 266 109 192 229 188 153 162 115 13 145 219 132 281 309 250 221 270 136 5 5 138 307 301 333 42 222 122 20 304 178 24 42 182 316 122 245 311 316 305 47 66 211 155 35 196 149 128 297 160 213 27 228 59 258 156 142 295 216 240 178 201 19 94 248 63 247 187 225 242 321 162 339 143 148 160 10 135 15 164 243 102 226 16 65 212 291 311 159 342 251 195 195 326 165 39 266 242 44 213 28 34 165 127 228 252 189 153 234 23 225 279 101 263 150 165 333 204 83 307 153 74 162 298 343 63 4 92 55 1 16 109 115 175 174 33 169 116 66 67 119 123 115 138 132 320 285 157 142 58 44 229 212 122 138 260 189 104 194 216 248 94 151 275 211 310 130 248 303 195 20 116 238 331 190 241 103 223 238 64 185 247 10 89 74 146 55 39 16 75 0 304 85 25 122 27 301 255 243 129 125 172 109 276 255 261 213 12 38 167 286 260 50 265 129 92 236 249 192 230 338 123 240 5 268 205 288 32 132 105 117 21 209 7 107 5 217 38 297 166 243 293 310 38 171 110 82 102 41 271 245 16 60 192 211 132 201 169 47 14 232 216 307 34 334 284 12 27 245 315 336 65 192 189 57 46 79 245 74 281 247 126 84 201 3 205 51 313 274 34 197 289 330 65 32 159 296 45 204 42 93 60 141 256 231 58 191 84 50 326 107 335 240 [出力例] 9860467 |
■参照サイト
AtCoder Regular Contest 133