Official

A - 図書館の貸出管理 / Library Loan Management Editorial by kyopro_friends


初心者の方へ


問題文の指示通り貸出申請の処理をシミュレーションすればよいです。 S[i][j] で図書館 \(i\) のジャンル \(j\) の本の数を表す二次元配列 S を用いて管理します。

多くの言語では配列の添字は \(0\) から始まることに注意してください。

実装例 (C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
  int n;
  cin >> n;
  vector<int>m(n);
  vector<vector<int>>s(n);
  for(int i=0; i<n; i++){
    cin >> m[i];
    vector<int>si(m[i]);
    for(int j=0; j<m[i]; j++) cin >> si[j];
    s[i] = si;
  }

  int failed = 0;
  int q;
  cin >> q;
  while(q--){
    int v, d;
    cin >> v >> d;
    v--, d--;
    if(s[v][d] > 0){
      s[v][d]--;
    }else{
      failed++;
    }
  }

  for(int i=0; i<n; i++){
    for(int j=0; j<m[i]; j++){
      if(j > 0) cout << ' ';
      cout << s[i][j];
    }
    cout << endl;
  }
  cout << failed << endl;
}

実装例 (Python)

N = int(input())
S = []
for _ in range(N):
  MS = list(map(int, input().split()))
  S.append(MS[1:])

failed = 0
Q = int(input())
for _ in range(Q):
  v, d = map(int, input().split())
  v -= 1
  d -= 1
  if S[v][d] > 0:
    S[v][d] -= 1
  else:
    failed += 1

for s in S:
  print(*s)
print(failed)

posted:
last update: