怪盗geek @ 2018-01-28 18:43:49
#include <iostream>
using namespace std;
int main()
{
int n,s,a,b,i,j,temp,cnt=0;
int *p=new int[n];
int *q=new int[n];
cin>>n>>s>>a>>b;
for(i=0;i<n;i++)
cin>>p[i]>>q[i];
int high=a+b,mark=1;
for(i=1;i<n;i++)
{
mark=1;
for(j=0;j<n-i;j++)
{
if(q[j]>q[j+1])
{
temp=q[j];
q[j]=q[j+1];
q[j+1]=temp;
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
mark=0;
}
}
if(mark)break;
}
for(i=0;i<n;i++)
{
if(p[i]<=high&&s>=q[i])
{
cnt++;
s-=q[i];
}
if(s<q[i])
break;
}
for(i=0;i<n;i++)
cout<<i<<" "<<p[i]<<" "<<q[i]<<endl;
cout<<cnt;
return 0;
}
测试数据是
100 100
20 80 1 99 2 98 3 97 4 96 5 95 6 94 7 93 8 92 9 91 10 90 11 89 12 88 13 87 14 86 15 85 16 84 17 83 18 82 19 81 20 80 21 79 22 78 23 77 24 76 25 75 26 74 27 73 28 72 29 71 30 70 31 69 32 68 33 67 34 66 35 65 36 64 37 63 38 62 39 61 40 60 41 59 42 58 43 57 44 56 45 55 46 54 47 53 48 52 49 51 50 50 51 49 52 48 53 47 54 46 55 45 56 44 57 43 58 42 59 41 60 40 61 39 62 38 63 37 64 36 65 35 66 34 67 33 68 32 69 31 70 30 71 29 72 28 73 27 74 26 75 25 76 24 77 23 78 22 79 21 80 20 81 19 82 18 83 17 84 16 85 15 86 14 87 13 88 12 89 11 90 10 91 9 92 8 93 7 94 6 95 5 96 4 97 3 98 2 99 1 100 0
by Rolston @ 2018-01-28 18:55:48
dalao操作太6看不懂
蒟蒻表示这就是个快排啊
by 怪盗geek @ 2018-01-28 19:33:27
我现在输入第二组测试数据可以得到正确答案14但是提交还是过不了第二个测试点,这是为什么啊
by 怪盗geek @ 2018-01-28 19:38:22
我刚才不用动态申请数组就可以ac了,有没有大佬解释一下
by Dog_Two @ 2018-01-28 19:45:16
动态内存把我秀翻了……