#9. 【UTR #1】vfk的数据
Time Limit: 20 Sec
Memory Limit: 256 MB
题目连接
http://uoj.ac/problem/9
Description
UOJ上,由于一群人开心的在hack着,有的题的测试数据都有10000组了!
为了处理这些数据,vfk决定把这道题所有输入数据都弄出来,每个数据给个编号,比如uoj1.in, uoj2.in。
这些编号是随机的,可以不连续,比如三组数据分别叫uoj1.in, uoj100.in, uoj2014.in。
输入数据的文件名一定是:题目名 + 数据编号 + ".in"。
vfk要你把这些输入文件按数据编号进行排序,之后用在线仙人球嵌套动态网络路径剖分优化的分支定界贪心剪枝启发式迭代加深人工智能搜索决策算法解决问题。
为了处理这些数据,vfk决定把这道题所有输入数据都弄出来,每个数据给个编号,比如uoj1.in, uoj2.in。
这些编号是随机的,可以不连续,比如三组数据分别叫uoj1.in, uoj100.in, uoj2014.in。
输入数据的文件名一定是:题目名 + 数据编号 + ".in"。
vfk要你把这些输入文件按数据编号进行排序,之后用在线仙人球嵌套动态网络路径剖分优化的分支定界贪心剪枝启发式迭代加深人工智能搜索决策算法解决问题。
Input
第一行一个正整数n,表示输入文件的个数。
接下来n个字符串表示每个输入文件的文件名,形如: 题目名 + 数据编号 + ".in",保证:
数据编号一定是正整数且不包含前导零。
数据编号一定互不相同。
题目名仅包含大小写字母和下划线。
所有输入文件的题目名完全一致。
特别的,如果是像1.in, 2.in这种,我们认为题目名为空,也是允许的
接下来n个字符串表示每个输入文件的文件名,形如: 题目名 + 数据编号 + ".in",保证:
数据编号一定是正整数且不包含前导零。
数据编号一定互不相同。
题目名仅包含大小写字母和下划线。
所有输入文件的题目名完全一致。
特别的,如果是像1.in, 2.in这种,我们认为题目名为空,也是允许的
Output
共n行,每行一个字符串,表示排序的结果。
Sample Input
8
dajiahaowoshiyangli9.in
dajiahaowoshiyangli5.in
dajiahaowoshiyangli2.in
dajiahaowoshiyangli1.in
dajiahaowoshiyangli3.in
dajiahaowoshiyangli7.in
dajiahaowoshiyangli6.in
dajiahaowoshiyangli8.in
Sample Output
dajiahaowoshiyangli1.in
dajiahaowoshiyangli2.in
dajiahaowoshiyangli3.in
dajiahaowoshiyangli5.in
dajiahaowoshiyangli6.in
dajiahaowoshiyangli7.in
dajiahaowoshiyangli8.in
dajiahaowoshiyangli9.in
HINT
n≤10000
题意
题解:
直接排序就好了
先对比长度,长度相同再对比字符串就好了
代码:
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define test freopen("test.txt","r",stdin) #define maxn 1000010 #define mod 1000000007 #define eps 1e-6 const int inf=0x3f3f3f3f; const ll infll = 0x3f3f3f3f3f3f3f3fLL; inline ll read() { ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } //************************************************************************************** pair<int,string> s[10001]; int main() { //test; int n=read(); for(int i=0;i<n;i++) { cin>>s[i].second; s[i].first=s[i].second.size(); } sort(s,s+n); for(int i=0;i<n;i++) cout<<s[i].second<<endl; return 0; }