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

Обсуждение задачи 1119. Метро

Where is my error ? I got WA . Can you help me ! Pls
Послано Calin Ciutu (ciutu@go.ro) 4 апр 2002 01:18
Here is my source :

#include <stdio.h>
#include <math.h>

int m,n,k,primary=1,second=0;
char x[1100][130];
double min[2][1100];

void read_data()
 {
  int i,mod,_div,a,b;
  FILE *f=stdin;
  fscanf(f,"%d%d%d",&n,&m,&k);
  n++;m++;
  for(i=0;i<k;i++)
   {
    fscanf(f,"%d%d",&a,&b);
    mod=a & 7;
    _div=a >> 3;
    x[b][_div]=x[b][_div] | (1 << mod);
   }
 }

double minim(double a,double b)
 {
  return(a<=b?a:b);
 }

void solve()
 {
  int i,j,mod,_div;
  min[second][1]=0;
  for(i=2;i<=n;i++)min[second][i]=(i-1)*100;

  for(i=2;i<=m;i++)
   {
    min[primary][1]=min[second][1]+100;
    for(j=2;j<=n;j++)
     {
      min[primary][j]=minim(min[primary][j-1]+100,min[second][j]+100);
      mod=(j-1) & 7;_div=(j-1) >> 3;
      if(x[i-1][_div] & (1 << mod))
       min[primary][j]=minim(min[primary][j],min[second][j-1]+
                                                       (141.42135));
     }
    second=!second;primary=!primary;
   }
 }

void print()
 {
  printf("%ld",(long)ceil(min[second][n]));
 }

void main()
 {
  read_data();
  solve();
  print();
 }
Mhm....(+)
Послано Miguel Angel 4 апр 2002 06:11
I started making corrections to your code, but after a while i saw
that you haven't understand the idea of the problem (for n, for m, is
absolutly wrong and unnecesary). Hint: You can do it in O(k^2)[i
remind k is the number of diagonals].
Goos Luck!
Re: Mhm....(+)
Послано Calin Ciutu (ciutu@go.ro) 4 апр 2002 17:06
> I started making corrections to your code, but after a while i saw
> that you haven't understand the idea of the problem (for n, for m,
is
> absolutly wrong and unnecesary). Hint: You can do it in O(k^2)[i
> remind k is the number of diagonals].
> Goos Luck!

OK ! Thank you !