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

Обсуждение задачи 1134. Карты

why i got wrong??!!
Послано t c 27 апр 2002 23:27
#include<iostream.h>
#include<stdio.h>
long a[1002];
long mark[1002];
long n,m;
long partition(long low,long high)
{
    a[0]=a[low];
    if(low<high)
    {
        while(low<high&&a[high]>=a[0])high--;
        a[low]=a[high];
        while(low<high&&a[low]<=a[0])low++;
        a[high]=a[low];
    }
    a[low]=a[0];
    return low;
}
/////////////
void qsort(long low,long high)
{
  if(low<high)
  {
      long piv=partition(low,high);
      qsort(low,piv-1);
      qsort(piv+1,high);
  }
}
//////////////
void main()
{
    long i,j;
    freopen("in.txt","r",stdin);
    cin>>n>>m;
    if(m==0){cout<<"YES";return ;}
    for(i=1;i<=m;i++)
    {
      cin>>a[i];
     if(a[i]>n){cout<<"NO";return ;}
    }
    for(i=1;i<=n;i++)mark[i]=0;
    qsort(1,m);
    for(i=1;i<=m;i++)
    {
        if(a[i]==0)
        {
        if(mark[1]==0){mark[1]=1;continue;}
        else{cout<<"NO";return ;}
        }

        if(a[i]<=n&&mark[a[i]]==0)
        {mark[a[i]]=1;continue;}

        if(a[i]+1<=n&&mark[a[i]+1]==0)
        {mark[a[i]+1]=1;continue;}

        cout<<"NO";return ;
    }
    cout<<"YES";
}