ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1078. Отрезки

[WA #2] why my code got WA #2
Послано Luke Fang 18 июл 2010 18:42
This is my code.
I don't know why got the WA #2.
But When I use the sample in the forum, I got the same answer as result in the forum.

Could someone tell my which place take wrong?
I really appreciate you.


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct{
    int right;
    int left;
    int index;
    int win;
    int lose;
}segment;


int contain(segment a,segment b){
    if (a.left > b.left  &&  a.right < b.right ) return 1;
    else return 0;
}


int main(){

    int i,j,m,num;
    segment point[500],tmp;
    memset(point , '\0' , sizeof(point) );

    scanf("%d",&num);
    if(num < 0 || num > 500) exit(0);

    for(i = 0 ; i <  num ; i++){
        scanf("%d %d",&point[i].left , &point[i].right );
        if(point[i].left > 10000 || point[i].left < -10000) exit(0);
        else if(point[i].right > 10000 || point[i].right < -10000) exit(0);
        point[i].index = i;
    }

    for(i = 0 ; i < num ; i++){
        if(point[i].left > point[i].right){
                           m = point[i].left;
               point[i].left = point[i].right;
              point[i].right =  m ;
        }
    }
/*
   for(i = 0 ; i < num ; i ++){
       printf("%2d %2d\n",point[i].left , point[i].right);
   }
*/
   for (i = 0 ; i <  num ; i++){
        for(j = 0; j < num; j++){
               if( ( i != j )   &&   (  contain( point[i] , point[j] )  )   ){
  /*                  printf("i = %d j = %d \n" , i, j);      */
                      point[i].lose ++;
                      point[j].win ++;
               }
        }
   }
/*
   for(i = 0 ; i < num ; i ++){
       printf("%2d %2d\n",point[i].win , point[i].lose);
   }
*/
   for(i = 0 ; i < num ; i ++){
         for(j = i ; j < num ; j++ ){
                 if ( point[i].lose  <  point[j].lose ){

                         tmp = point[i];
                    point[i] = point[j];
                    point[j] = tmp ;
                 }
         }
   }

   for(i = point[0].lose  ; i < num ; i ++){
         for(j = i ; j < num ; j++ ){
                 if ( point[i].win  <  point[j].win ){
                         tmp = point[i];
                    point[i] = point[j];
                    point[j] = tmp ;
                 }
         }
   }

   printf("%d\n",point[0].lose + 1);

   for(i = 0 ; i <= point[0].lose  ; i ++){
       printf("%d ",point[i].index+1);
   }

return 0;
}