#include
int main(){
int size, q, n, sum;
int left, right;
scanf("%d %d", &size, &q);
int accum[size+1];
accum[0] = 0;
for(int i=1; i scanf("%d", &n);
accum[i] = accum[i-1] + n;
}
while(q-- > 0){
scanf("%d %d", &left, &right);
if(left>right || (left>size || right>size))
return -1;
sum = accum[right] - accum[left-1];
sum = (int)(sum /(right - left + 1));
printf("%d\n", sum);
}
}
문제는 이거.
You are given an array of n numbers and q queries. For each query you have to print the floor of the expected value(mean) of the subarray from L to R.
Input:
First line contains two integers N and Q denoting number of array elements and number of queries.
Next line contains N space seperated integers denoting array elements.
Next Q lines contain two integers L and R(indices of the array).
Output:
print a single integer denoting the answer.
Constraints :
1<= N ,Q,L,R <= 10^6
1<= Array elements <= 10^9
컴파일은 되고, time error도 안나고 O(n^2)되는것도 피했는데
어디서 문제가 생긴걸까..
해당 댓글은 삭제되었습니다.
아 맞습니다. 오버플로우때문에 안풀린거였어요 ! 감사합니다 .궁금한게 있는데요
scanf("%d %d", &size, &q); int accum[size+1]; 이게 어떻게 컴파일되는거죠? 제가 알기로는 컴파일시에 배열의 크기가 정해지고, 배열의 크기를 입력받는 런타임시애는 배열의 크기를 바꾸지 못하는걸로 들었었거든요. 컴파일이 되지 않아야하는것 아닌가요?
만약 VLA기능을 지원하지 않는다면 항상 방금같은 배열의 크기를 입력으로부터 받아야할땐 동적할당을 쓸수밖에 없는거네요...
정말 친절하십니다!! 감사해요..
이해되엇어요!
1시간해서 안되면 답봐라
풀었음 ㅇ단순오버플로우문제였음
위에 답글 답좀해주셈
니 컴파일러가 문젠거지 씨발새꺄