#8181: 奇怪的资测


a450 (要学会宽容)

學校 : 福建省福州第十九中学
編號 : 33926
來源 : [118.189.34.85]
最後登入時間 :
2016-04-05 21:29:33
a528. 大數排序 | From: [27.155.220.140] | 發表日期 : 2013-09-13 20:29

为什么我自己怎么测都可以

扔进来就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;

}


 
ZeroJudge Forum