题目大意:

输入n k,1-n的排列,k次操作

操作P:输入一个m 输出第m个排列

操作Q:输入一个排列 输出它是第几个排列

Sample Input

5 2
P
3
Q
1 2 5 3 4

Sample Output

1 2 4 3 5
5

 
康拓展开裸题 然而因为用了getchar(); 所以一直在超时
康拓展开:http://www.cnblogs.com/dong008259/archive/2011/12/12/2283436.html
#include <bits/stdc++.h>
using namespace std;
int n,a[],b[];
long long int fac[]={,,,,,,,,,,,
,,,,,,
,,,};
void ops0()
{
long long sum=;
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
{
int tem=;
for(int j=i+;j<=n;j++)
if(a[j]<a[i]) tem++;
sum+=tem*fac[n-i];
}
printf("%lld\n",sum+);
}
void ops1()
{
long long m; scanf("%lld",&m); m--;
for(int i=n-;i>=;i--)
{
int tem=m/fac[i];
for(int j=;j<=tem;j++)
if(b[j]) tem++;
if(i) printf("%d ",tem+);
else printf("%d",tem+);
b[tem]=;
m%=fac[i];
}
printf("\n");
}
int main()
{
int k;
while(~scanf("%d%d",&n,&k))
{
while(k--)
{
memset(b,,sizeof(b));
char ops; scanf(" %c",&ops);
if(ops=='P') ops1();
else ops0();
}
printf("\n");
} return ;
}

最新文章

  1. JQuery:JQuery添加元素
  2. 微软职位内部推荐-Senior Software Engineer
  3. 修改范围PHP_INI_SYSTEM与PHP_INI_ALL的区别
  4. javascript外部使用
  5. c/c++内存机制(一)(转)
  6. 要缩小通过两个触摸点的观点(iOS)
  7. Jmeter压力测试环境准备
  8. Android-------- AlertDialog中EditText无法弹出输入法的解决
  9. UVA 1622 Robot
  10. JProfiler解决Java服务器的性能跟踪
  11. var 与function的权重浅析
  12. Byte[]和BASE64之间的转换
  13. 6.javaweb之respose对象
  14. 【操作教程】利用YCSB测试巨杉数据库性能
  15. java宜立方商城项目
  16. Demo3
  17. Centos7 通配符HTTPS证书申请 实测 笔记
  18. 【洛谷P1516】青蛙的约会
  19. [转载]解决在win10中webstrom无法使用命令行(Terminal)
  20. CentOS 7.x 用shell增加、删除端口

热门文章

  1. ajax请求是的动画实现
  2. JAVA学习之Java程序开发初次体验
  3. idea无法引用jar包中的class
  4. Linux启动过程的C语言代码分析
  5. 自己写Linux module来收集buddy info
  6. 剑指offer——58数组中数值和下标相等的元素
  7. python+tushare获取股票每日停复牌信息
  8. Django-ORM初识
  9. Codeforces Round #563 (Div. 2) E. Ehab and the Expected GCD Problem
  10. delphi 判断两个时间差是否在一个指定范围内