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