QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#141287#6525. New Housescy1999TL 1ms3476kbC++11712b2023-08-17 10:18:502023-08-17 10:18:52

Judging History

你现在查看的是最新测评结果

  • [2023-08-17 10:18:52]
  • 评测
  • 测评结果:TL
  • 用时:1ms
  • 内存:3476kb
  • [2023-08-17 10:18:50]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5;
int t,n,m;
int sum[N];
struct node
{
	int a,b,z;
}w[N];
bool cmp(node x,node y)
{
	return x.z>y.z;
}
signed main()
{
	cin>>t;
	while(t--)
	{
		int num=0;
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			cin>>w[i].a>>w[i].b;
			num+=w[i].b;
			w[i].z=w[i].a-w[i].b;
		}
		sort(w+1,w+n+1,cmp);
		int maxn=0;
		if((m+1)/2>=n)
		{
			maxn=num;
		}
		for(int i=1;i<=n;i++)
		{
			sum[i]=sum[i-1]+w[i].z;
		}
		for(int x=2;x<=n;x++)
		{
//			if(x==1)
//			{
//				continue;
//			}
			if(( (m-x)/2 )<n-x)
			{
				continue;
			}
			maxn=max(maxn,num+sum[x]);
		}
		cout<<maxn<<endl;
	}
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3476kb

input:

3
4 5
1 100
100 1
100 1
100 1
2 2
1 10
1 10
2 3
100 50
1 1000

output:

400
2
1050

result:

ok 3 number(s): "400 2 1050"

Test #2:

score: -100
Time Limit Exceeded

input:

100000
6 11
191141536 365120521
799679686 648574232
102602909 467685128
405440859 796808887
384858152 191995380
433392826 195648471
5 13
831367906 510447872
795639287 575551283
811207605 176441088
240156289 946977042
133416463 721098873
5 5
806744021 699586200
630510306 637827160
49223781 641709297
...

output:

3247545200
4106290713
2653993029
5122532137
5570513606
2031887824
2044500908
1857678917
6815058419
2237593918
6646615756
5638337819
3690874076
5497726904
5513905900
5404435094
4705403467
2411992217
3430587752
5098767681
3921151709
1445672728
2692878616
3833748807
2716183054
974485573
6464787173
8839...

result: