PAT乙級1015題解(Basic Level)Practice
2603 ワード
最初はC++のSTLでタイムアウトして、またC言語に変えました
タイムアウトのコードは次のとおりです.
#include
#include
struct stu
{
int num;
int de;
int cai;
};
int comp(const void *ss1,const void *ss2)
{
const struct stu * s1 = (const struct stu *)ss1;
const struct stu * s2 = (const struct stu *)ss2;
int zong1 = s1->de+s1->cai;
int zong2 = s2->de+s2->cai;
if( zong1!= zong2)
return zong1de!=s2->de)
return s1->dede;
return s1->num>s2->num;
}
int main()
{
int N,L,H;
scanf("%d %d %d",&N,&L,&H);
struct stu v[N];
int i,j;
for(i=0,j=0;i=H && v[i].cai>=H)
{
v1[j1++]=v[i];
continue;
}
if(v[i].de>=H)
{
v2[j2++]=v[i];
continue;
}
if(v[i].de>= v[i].cai)
{
v3[j3++]=v[i];
continue;
}
v4[j4++]=v[i];
}
qsort(v1,j1,sizeof(struct stu),comp);
qsort(v2,j2,sizeof(struct stu),comp);
qsort(v3,j3,sizeof(struct stu),comp);
qsort(v4,j4,sizeof(struct stu),comp);
printf("%d
",j);
for(i=0;i
タイムアウトのコードは次のとおりです.
#include
#include
#include
using namespace std;
struct stu
{
int num;
int de;
int cai;
};
bool operatorzong2;
if(s1.de!=s2.de)
return s1.de>s2.de;
return s1.num>N>>L>>H;
vector v;
int i;
for(i=0;i>s.num>>s.de>>s.cai;
if(s.de v1;
vector v2;
vector v3;
vector v4;
for(i=0;i=H && v[i].cai>=H)
{
v1.push_back(v[i]);
continue;
}
if(v[i].de>=H)
{
v2.push_back(v[i]);
continue;
}
if(v[i].de>= v[i].cai)
{
v3.push_back(v[i]);
continue;
}
v4.push_back(v[i]);
}
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
sort(v3.begin(),v3.end());
sort(v4.begin(),v4.end());
cout<