Drunkyous @ 2019-07-21 18:04:42
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,s,a,b,i,j,ans=0,t1=0,t2=0;
int x[5001],y[5001];
bool flag;
cin>>n>>s>>a>>b;
a+=b;
for(i=0;i<n;i++)
cin>>x[i]>>y[i];
for(i=n-1;i>=1;i--)
{
flag=true;
for(j=0;j<i;j++)
{
if(y[j]>y[j+1])
{
swap(x[j],x[j+1]);
swap(y[j],y[j+1]);
x[j]=t1,y[j]=t2;
flag=false;
}
}
if(flag==true)break;
for(i=1;i<=n;i++)
if(x[i]<=a&&y[i]<=s)
{
s-=y[i];
ans++;
}
}
cout<<ans;
return 0;
}
没找到错..emm
by Drunkyous @ 2019-07-21 21:25:24
捞一下
by 朝歌九月 @ 2019-07-26 19:07:53
因为第四个点是0 0 0 0的数据…所以你当然能过了。不过小伙子你样例都没过歪,建议重新检查检查。
by 朝歌九月 @ 2019-07-26 19:15:19
冒泡排序是一个不稳定的排序方式,你可以试一下在你的ans++前面输出一下s和x[i].y[i],我复制了一下你的程序,样例输出出来中间间隔了很多零。就是说你的冒泡排序中产生了一堆不必要的零数组。(总而言之就是排序写错了)建议换结构体和sort写这道题更方便些~不过整体思路应该是没问题的啦。
by lcyxds @ 2019-08-07 11:12:50
为什么我只炸4
by USS_Enterprise @ 2019-08-13 12:32:04
@朝歌九月 冒泡排序是一个稳定的排序,(我用冒泡过的)