#include using namespace std; using li = long int; int main() { int N; cin >> N; vector
  • D(N); for(int i = 0; i < N; i++){ cin >> D[i]; } int Q; cin >> Q; vector
  • y(Q); vector
  • m(Q); vector
  • d(Q); vector
  • k(Q); for(int i = 0; i < Q; i++){ cin >> y[i] >> m[i] >> d[i] >> k[i]; } vector
  • D_sum(N); int prev = 0; for(int i = 0; i < N; i++){ D_sum[i] = prev + D[i]; prev = D_sum[i]; } li y_days = D_sum[N-1]; for(int i = 0; i < Q; i++){ // 日数のみに変換 long long int days = 0; days = (y[i]-1) * y_days; days += (m[i] == 1 ? 0 : D_sum[m[i] - 2]); days += d[i]; days += k[i]; // 年月日に変換 li ans_y = 0; li ans_m = 0; li ans_d = 0; ans_y = (days - 1) / y_days + 1; days = (days - 1) % y_days + 1; int l = 0; int r = N - 1; int mid = (l + r) / 2; while(l < r){ // cout << mid << endl; if(days > D_sum[mid]){ l = mid + 1; } else { r = mid; } mid = (l + r) / 2; } ans_m = l + 1; // cout << days << endl; ans_d = days - (l == 0 ? 0 : D_sum[l - 1]); cout << ans_y << ' ' << ans_m << ' ' << ans_d << endl; } }