lvlina_r
شنبه 15 اسفند 1388, 19:58 عصر
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int max2=0,max3=0;
int a,b,c,d;
int min;
int count=1,n;
c=1;
d=0;
int *lowerx,*upperx,*lowery,*uppery;
ifstream fin ("in1.txt",ios::in);
ofstream fout ("in2.txt",ios::out);
fin >> n;
lowerx=new int [n];
upperx=new int [n];
lowery=new int [n];
uppery=new int [n];
for(int i=0;i<n;i++)
{
fin>>lowerx[i]>> upperx[i];
}
for(int j=0;j<n;j++)
{
min=lowerx[j];
for(int k=j+1;k<n;k++)
{
if(lowerx[k]<min)
{
min=lowerx[k];
a=lowerx[j];
b=upperx[j];
lowerx[j]=lowerx[k];
upperx[j]=upperx[k];
lowerx[k]=a;
upperx[k]=b;
}
}
}
lowery[0]=lowerx[0];
uppery[0]=upperx[0];
while(c<n)
{
if(uppery[d]<lowerx[c])
{
count++;
if(max3<lowerx[c]-uppery[d])
max3=lowerx[c]-uppery[d];
lowery[d+1]=lowerx[c];
uppery[d+1]=upperx[c];
d++;
c++;
}
if(uppery[d]>=lowerx[c]&&uppery[d]<=upperx[c])
{
lowery[d]=upperx[c];
c++;
}
if(uppery[d]>upperx[c])
c++;
}
for(int r=0;r<count;r++)
if(uppery[r]-lowery[r]>max2)
max2=uppery[r]-lowery[r];
fout << max2 << " " << max3 << endl;
return 0;
}
این کد را من نوشتم، می خوام بزرگترین اشترک و اجتماع بازه ها را چاپ کنه، ولی واسه بعضی داده ها اشتباه می ده، کسی می تونه کمکم کنه؟؟؟؟ مرســــــــــــــــــــــ ی
#include<fstream>
using namespace std;
int main()
{
int max2=0,max3=0;
int a,b,c,d;
int min;
int count=1,n;
c=1;
d=0;
int *lowerx,*upperx,*lowery,*uppery;
ifstream fin ("in1.txt",ios::in);
ofstream fout ("in2.txt",ios::out);
fin >> n;
lowerx=new int [n];
upperx=new int [n];
lowery=new int [n];
uppery=new int [n];
for(int i=0;i<n;i++)
{
fin>>lowerx[i]>> upperx[i];
}
for(int j=0;j<n;j++)
{
min=lowerx[j];
for(int k=j+1;k<n;k++)
{
if(lowerx[k]<min)
{
min=lowerx[k];
a=lowerx[j];
b=upperx[j];
lowerx[j]=lowerx[k];
upperx[j]=upperx[k];
lowerx[k]=a;
upperx[k]=b;
}
}
}
lowery[0]=lowerx[0];
uppery[0]=upperx[0];
while(c<n)
{
if(uppery[d]<lowerx[c])
{
count++;
if(max3<lowerx[c]-uppery[d])
max3=lowerx[c]-uppery[d];
lowery[d+1]=lowerx[c];
uppery[d+1]=upperx[c];
d++;
c++;
}
if(uppery[d]>=lowerx[c]&&uppery[d]<=upperx[c])
{
lowery[d]=upperx[c];
c++;
}
if(uppery[d]>upperx[c])
c++;
}
for(int r=0;r<count;r++)
if(uppery[r]-lowery[r]>max2)
max2=uppery[r]-lowery[r];
fout << max2 << " " << max3 << endl;
return 0;
}
این کد را من نوشتم، می خوام بزرگترین اشترک و اجتماع بازه ها را چاپ کنه، ولی واسه بعضی داده ها اشتباه می ده، کسی می تونه کمکم کنه؟؟؟؟ مرســــــــــــــــــــــ ی