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