Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

RabbitHunt/김태진: Difference between revisions

From ZeroWiki
imported>jereneal20
No edit summary
(Repair batch-0003 pages from live compare)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
== Status ==
== Status ==
{| class="wikitable"
{| class="wikitable" style="width:100%;"
|-
|-
| Problem
| Problem
Line 25: Line 25:
  {
  {
     int N,i,j,k=0;
     int N,i,j,k=0;
     double a[200][200]={0};
     double a[200][200]={0};
     int c[200][200]={0}, C=-1;
     int c[200][200]={0}, C=-1;
     int b[2][200]={0};
     int b[2][200]={0};
      
      
     scanf("%d",&N);
     scanf("%d",&N);
     for(i=0;i<N;i++){
     for(i=0;i<N;i++){
         scanf("%d %d",&b[0][i],&b[1][i]);
         scanf("%d %d",&b[0][i],&b[1][i]);
     }
     }
     for(i=0;i<N;i++){
     for(i=0;i<N;i++){
Line 37: Line 37:
         for(j=i+1;j<N;j++){
         for(j=i+1;j<N;j++){
             //a에 있는 기울기들은 i마다 최대 점의수 -1 까지 들어가겠지
             //a에 있는 기울기들은 i마다 최대 점의수 -1 까지 들어가겠지
             if(b[0][i]==b[0][j]) {C++; continue;}
             if(b[0][i]==b[0][j]) {C++; continue;}
             a[i][j]=(b[1][i]-b[1][j])/(b[0][i]-b[0][j]);
             a[i][j]=(b[1][i]-b[1][j])/(b[0][i]-b[0][j]);
         }
         }
         for(j=i+1;j<N-1;j++){  
         for(j=i+1;j<N-1;j++){  
             //갯수 세기
             //갯수 세기
             for(k=0;k<N-1;k++){
             for(k=0;k<N-1;k++){
                 //if(a[i][j]!=0){
                 //if(a[i][j]!=0){
                     if(a[i][j]==a[i][k+1]) c[i][j]++;
                     if(a[i][j]==a[i][k+1]) c[i][j]++;
                 //}
                 //}
             }
             }
         }
         }
         c[i][0]=c[i][j-1];
         c[i][0]=c[i][j-1];
         for(j=i+1;j<N-1;j++){
         for(j=i+1;j<N-1;j++){
             if(c[i][0]<c[i][j+1]) c[i][0]=c[i][j+1];
             if(c[i][0]<c[i][j+1]) c[i][0]=c[i][j+1];
         }
         }
          
          
     }
     }
     //입력해서 기울기를 a에 넣고, C에다 갯수 넣는다.
     //입력해서 기울기를 a에 넣고, C에다 갯수 넣는다.
     if(C<c[0][0]) C=c[0][0];
     if(C<c[0][0]) C=c[0][0];
     for(i=0;i<N-1;i++){
     for(i=0;i<N-1;i++){
         if(c[i][0]<c[i+1][0]) C=c[i+1][0];
         if(c[i][0]<c[i+1][0]) C=c[i+1][0];
     }
     }
     if(C==0) C++;
     if(C==0) C++;
Line 86: Line 86:
1 1
1 1
2 2
2 2
101 102 불만족 (2가 나와야 하는데 (1,1)과 (101,102)의 기울기를 1로 인식해서 3이 나옴;;)
101 102 만족


----
----
[[ACM_ICPC/2011년스터디]]
[[ACM_ICPC/2011년스터디]]

Latest revision as of 00:29, 27 March 2026

Status

Problem 2606 User jereneal20
Memory ?K Time ?MS
Language GCC Result Wrong Answer

Source

#include <stdio.h>

int main()
{
    int N,i,j,k=0;
    double a[200][200]={0};
    int c[200][200]={0}, C=-1;
    int b[2][200]={0};
    
    scanf("%d",&N);
    for(i=0;i<N;i++){
        scanf("%d %d",&b[0][i],&b[1][i]);
    }
    for(i=0;i<N;i++){
        //기울기를 구해 a에 넣는다
        for(j=i+1;j<N;j++){
            //a에 있는 기울기들은 i마다 최대 점의수 -1 까지 들어가겠지
            if(b[0][i]==b[0][j]) {C++; continue;}
            a[i][j]=(b[1][i]-b[1][j])/(b[0][i]-b[0][j]);
        }
        for(j=i+1;j<N-1;j++){ 
            //갯수 세기
            for(k=0;k<N-1;k++){
                //if(a[i][j]!=0){
                    if(a[i][j]==a[i][k+1]) c[i][j]++;
                //}
            }
        }
        c[i][0]=c[i][j-1];
        for(j=i+1;j<N-1;j++){
            if(c[i][0]<c[i][j+1]) c[i][0]=c[i][j+1];
        }
        
    }
    //입력해서 기울기를 a에 넣고, C에다 갯수 넣는다.
    if(C<c[0][0]) C=c[0][0];
    for(i=0;i<N-1;i++){
        if(c[i][0]<c[i+1][0]) C=c[i+1][0];
    }
    if(C==0) C++;
    printf("%d",C+1);
    
    return 0;
}

Trial and Error

  • 새벽 5시까지 삽질해서 만든 코드입니다. 웬만한 예외사항도 다 점검해봤는데 됩니다. 하지만 기울기가 소숫값이면 그걸 정수값으로 인식해버리던데, 그걸 아직 해결하지 못하고 있네요. 제 예상대로면 그게 해결되면 accept...일지도.. float로 a배열을 선언해도 안되는건가..? 될텐데;;

3 1 1 2 1 3 1 만족.

3 1 1 1 2 1 3 만족.

2 1 1 -100 101 만족

3 1 1 2 2 101 102 만족


ACM_ICPC/2011년스터디