khj3191   7년 전

#include <stdio.h>

int main()

{

  int a[3][1000]={};
  int i=0, j=0, s=0;
 
  scanf("%d", &s);
  for(i=0; i<=s-1; i++)
  scanf("%d %d", &a[0][i], &a[1][i]);
 
  for(i=0; i<=s-1; i++)
  {
  for(j=0; j<=s-1; j++)
  {
  if(i==j || a[0][i]==a[0][j] || a[1][i]<=a[1][j]) continue;
  a[2][i]+=a[1][j];
  }
  printf("%d\n", a[2][i]);
  }
  return 0;
 
}

왜일까요?

alohajihwan   7년 전

지금 N의 최대값이 2십만입니다. 근데 a 배열을 1000밖에 안잡았으므로 당연히 런타임오류가 나올수 밖에 없지요

khj3191   7년 전

그래서 200000으로 했는데도 에러가 나요!

alohajihwan   7년 전

이제 시간초과가 뜨네요. N의 최대값이 200000이므로 N^2 알고리즘으로는 풀 수없습니다.

N 이나 NlogN만에 풀 수 있는 알고리즘 방법을 생각하세요!

댓글을 작성하려면 로그인해야 합니다.