#16897: 為何RE?


611015@stu.cchs.chc.edu.tw (超越極限)


#include<stdio.h>
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

#16898: Re:為何RE?


314159265358979323846264338327 ... (少年π)


#include
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

開這麼大的陣列當然會RE
如果要開,請宣告在main()以外
當然這題就算這麼做還是會TLE的

請找出更有效率的方法

#16900: Re:為何RE?


611015@stu.cchs.chc.edu.tw (超越極限)


#include
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

開這麼大的陣列當然會RE
如果要開,請宣告在main()以外
當然這題就算這麼做還是會TLE的

請找出更有效率的方法

謝謝,瞭解了