2863821_ac_359ms_1872k.cc

来自「做的POJ的一些题目」· CC 代码 · 共 60 行

CC
60
字号
#include<iostream>
using namespace std;
typedef struct
{
      int sign;  //记录车号
      int s;   //记录所去铁道  
}node;
node mg[200000];
int num[200003];
int x=1,n,m,ok=1;
int cmp(const void *a,const void *b)
{
    return (*(node *)a).sign-(*(node *)b).sign;
}
int main()
{
    int i,k;
    while(true)
    {
       scanf("%d %d",&n,&m);
       if(n==0 && m==0)
          break;
       scanf("%d",&mg[0].sign);
       num[x++]=mg[0].sign;
       mg[0].s=1;
       for(i=1;i<n;i++)
       {
            k=1;
            scanf("%d",&mg[i].sign);
            if(ok==0)
               continue;
            while(k<x && mg[i].sign<num[k])
                k++;                
            if(k==x)
            {
                 x++;
                 if(k>m) 
                   ok=0;       
            }
            num[k]=mg[i].sign;
            mg[i].s=k;
       }
       if(ok==0)
          printf("Transportation failed\n");
       else
       {
           for(i=0;i<n;i++)
              printf("%d ",mg[i].s);
              printf("\n"); 
           qsort(mg,n,sizeof(mg[0]),cmp);  
           for(i=0;i<n;i++)
              printf("%d ",mg[i].s);
              printf("\n");  
       }
       ok=1;
    }
    system("pause");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?