| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
TLE!!!怎么做呢?帮我看看吧#include <stdio.h>
#include <string.h>
int a[50000];
char s[50000][8];
void output(int i,int j) {
int max=-1,k,p;
if(i==j) {
printf("(%s/%d)",s[i],a[i]);
return ;
}
for(k=i;k<=j;k++) {
if(a[k]>max) {
max=a[k];
p=k;
}
}
if(p==i) {
printf("(");
printf("%s/%d",s[p],a[p]);
output(i+1,j);
printf(")");
return ;
}
if(p==j) {
printf("(");
output(i,j-1);
printf("%s/%d",s[p],a[p]);
printf(")");
return ;
}
printf("(");
output(i,p-1);
printf("%s/%d",s[p],a[p]);
output(p+1,j);
printf(")");
return ;
}
int main(){
int n,i,j,k;
char c;
int tem,len;
int max,p;
while(1){
scanf("%d",&n);
if(n==0) break;
max=-1;
if(n==1) {
scanf("%s",&c,&s[0]);
printf("(%s)\n",s[0]);
continue;
}
for(i=0;i<n;i++) {
scanf("%s",s[i]);
len=strlen(s[i]);
j=len-1;
k=1;tem=0;
while(s[i][j]>='0' && s[i][j]<='9'){
tem=tem+(s[i][j]-'0')*k;
k=k*10;
j--;
}
a[i]=tem;
s[i][j]='\0';
if(max<a[i]) {
max=a[i];
p=i;
}
}
if(p==0) {
printf("(");
printf("%s/%d",s[p],a[p]);
output(p+1,n-1);
printf(")\n");
continue;
}
if(p==n-1) {
printf("(");
output(0,p-1);
printf("%s/%d",s[p],a[p]);
printf(")\n");
continue;
}
printf("(");
output(0,p-1);
printf("%s/%d",s[p],a[p]);
output(p+1,n-1);
printf(")\n");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator