zzuli--1812--sort(模拟水题)
2015-12-10 21:31
302 查看
1812: sort
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 158 Solved: 30
SubmitStatusWeb Board
Description
想必大家对排序已经很熟悉了,但是spy好像对排序不太熟悉,有一天,他看到这样一个关于排序的题目:对于 k 个用空格分隔开的整数,依次为 n1, n2 … nk。请将所有下标不能被 3 但可以被 2 整除的数在这些数字原有的位置上进行升序排列,此外,将余下下标能被 3 整除的数在这些数字原有的位置上进行降序排列。
spy想了半天不知道怎么排序,你可以帮助他么?
Input
多组数据,每组数据一行,为k个小于1000的正整数,依次为 n1, n2 … nk。(1 <= k <= 100000)Output
对于每组数据,输出排序后的结果。Sample Input
1 3 4 2 10 6 8Sample Output
1 2 6 3 10 4 8这道题输入有点坑,其他都没啥
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<vector> #include<queue> #include<stack> #include<map> using namespace std; #define MAXN 200000 int a[MAXN],b[MAXN],c[MAXN]; int cmp(int a,int b) { return a>b; } int main() { int k,i=0; char ch; while(~scanf("%d",&a[++i])) { ch=getchar(); if(ch==' ') continue; //如果两个数据之间是' '的话就继续输入,负责就开始操作 else { int ans=0,cnt=0; for(int j=1;j<=i;j++) { if(j%2==0&&j%3!=0) b[cnt++]=a[j]; else if(j%3==0) c[ans++]=a[j]; } sort(b,b+cnt); sort(c,c+ans,cmp); int m=0,n=0,flot=0; for(int j=1;j<=i;j++) { if(flot)printf(" "); else flot++; if(j%2==0&&j%3!=0) printf("%d",b[m++]); else if(j%3==0) printf("%d",c[n++]); else printf("%d",a[j]); } printf("\n"); } memset(a,0,sizeof(a));//数据还是清零的好,没清零错了两次 memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); i=0; } return 0; }
相关文章推荐
- Apache与Tomcat的整合
- c++设计模式(4)------建造者模式
- 数值的整数次方
- project euler 74
- DOM解析
- android学习笔记——Fragment最佳实践
- android学习笔记——ExpandableListView学习
- pl/sql游标
- 第三篇 Java类文件结构
- Bootstrap3 为何无法显示Glyphicons 图标
- 系统文件操作函数
- zzuli--1812--sort(模拟水题)
- 数据库
- 特征选择常用算法综述
- Apache服务的HTTPS支持配置
- 二进制中1的个数
- linux打包与压缩命令
- android学习笔记——Fragment(碎片)
- xcode 清理空间
- 建PureFTPd服务器