请问,为什么不能按小到大排序
查看原帖
请问,为什么不能按小到大排序
778886
brucelei658楼主2024/4/28 17:38

按结束时间小到大排序,不是也可以做码,最后判断下输出,但是只拿了50,有什么数据是错的吗

#include<bits/stdc++.h>
using namespace std;
/*panda*/
#define pb push_back
#define bug printf("*********\n");
#define INF 0x3f3f3f3f
#define fs first
#define sc second
#define mem0(a) memset(a, 0, sizeof(a));
#define memf(a) memset(a, 0x3f, sizeof(a));
#define f(i,a,b) for(int i = a;i<=b;++i)
#define f_(i,a,b) for(int i = a;i>=b;--i)
typedef long long ll;
typedef unsigned long long ull;
void read(int &x){
	int f=1;x=0;char s=getchar();
	while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
	while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
	x*=f;
}
const int N =1e3+10;
int n;
struct node{
	int t,s;
}ar[N];
bool cmp(node x,node y){
	return x.s<y.s;
}
void slove(){
	cin>>n;
	f(i,1,n){
		scanf("%d%d",&ar[i].t,&ar[i].s);
	}
	sort(ar+1,ar+1+n,cmp);
	int t = 0,fg = 0;
	f(i,1,n){
		if(ar[i].t+t <= ar[i].s){
			t+=ar[i].t;
		}else{
			fg = 1;
			break;
		}
	}
	if(fg == 1)cout<<-1;
	else cout<<min(ar[n].s-t,ar[1].s-ar[1].t);
}






int main(){
	int _ = 1;
//	cin>>_;
	while(_--)slove();
	return 0;
}












2024/4/28 17:38
加载中...