0-1수열 타임리밋 문제.....

  • 200824437
    200824437
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    int main(){
      char num[100000];
      scanf("%s",&num);
      int *arr;
      arr = new int[strlen(num)];
      for(int i=0; i<strlen(num); i++)
        arr[i]=num[i]-48;
      int q_num;
      scanf("%d",&q_num);
      int *a,*b;
      a= new int[q_num];
      b= new int[q_num];
      for(int i=0; i<q_num; i++){
        scanf("%d%d",&a[i],&b[i]);
      }  
      for(int i=0; i<q_num; i++){
        int flag = arr[a[i]];
        int sig=0;
        for(int j=a[i]+1; j<=b[i]; j++){
          if(flag!=arr[j]){
            sig=1;
            break;
          }
        }
        if(sig==1)
          cout<<"No"<<endl;
        else
          cout<<"Yes"<<endl;
    
      }
      return 0;
    }
    

    scanf와 printf로도 다 바꿨는데, 시간초과가 계속 나오네여...;;


    12년 전
5개의 댓글이 있습니다.
  • Being
    Being

    질문을 올리시기 전에 아래 글 작성 도움말을 읽어 주세요. 코드가 깨져 있어 수정하였습니다.

    이건 입/출력의 속도 문제가 아니라, 문제를 풀기에 너무 느린 비효율적인 알고리즘을 사용하셔서 그렇습니다. 단순히 시키는 대로 구현하는 문제가 아니니 조금 더 생각해 보시고, 그래도 모르시겠으면 다시 질문을 올려 주세요 :)


    12년 전 link
  • JongMan
    JongMan

    수열의 크기가 최대 1백만이기 때문에 이런 방법으로 푸셔서는 시간 안에 절대로 안나올겁니다. 좀 더 빠른 방법을 생각해 보세요. :-)


    12년 전 link
  • JongMan
    JongMan

    이런 늦었다


    12년 전 link
  • hyunhwan
    hyunhwan

    입출력 함수의 문제 보단, 구현하신 알고리즘이 제한시간 내에 답이 나오기 어렵기 때문에 TLE가 나는 것입니다.

    보다 빠른 알고리즘을 생각해보시는걸 권합니다.


    12년 전 link
  • 200824437
    200824437

    아이고 다들 감사드려용^^ 복 받으세용^^ 다시 도전 해보겠습니다!!


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.