为什么我自己怎么测都可以
扔进来就WA了
是string 类型长度不够吗???
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
/*负数排序*/
bool cmp(string a, string b){
int lena = a.size();
int lenb = b.size();
/*
lena : a串的长度
lenb : b串的长度
*/
/*比较返回较位数大的数或绝对值较大的数(负数)*/
if(lena > lenb) return 1;
if(lena == lenb) return a > b;
if(lena < lenb) return 0;
}
/*正数排序*/
bool CMP(string a, string b){
int lena = a.size();
int lenb = b.size();
/*
lena : a串的长度
lenb : b串的长度
*/
/*比较返回较位数小的数或绝对值较小的数(正数)*/
if(lena < lenb) return 1;
if(lena == lenb)return a < b;
if(lena > lenb) return 0;
}
int main(){
int n, f, z;
/*
n : n笔资测
f : 负数的个数
z : 正数的个数
*/
while(scanf("%d", &n) == 1){
f = z = 0;//初始化
string s[10001], fs[10001], zs[10001];
for(int i = 0; i <= n; i++) getline(cin, s[i]);
for(int i = 1; i <= n ;){
int first = s[i].find("-");
if(first == -1) zs[z++] = s[i++];
else fs[f++] = s[i++];
//判断是否为负
}
// cout<<f<<" "<<z<<endl;
sort(fs, fs+f, cmp);
sort(zs, zs+z, CMP);
/*排序*/
for(int i = 0; i < f; i++) cout<<fs[i]<<endl;
for(int i = 0; i < z; i++) cout<<zs[i]<<endl;
}
return 0;
}