我:二分! 题:你 TLE 了~~~
查看原帖
我:二分! 题:你 TLE 了~~~
742157
ZYK_luogu楼主2023/5/2 17:13
#include <cstdio>
using namespace std;
#define maxn 100005

struct node {
	int k, price, t;
} a[maxn];

int n;
long long ans = 0;

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i ++)
		scanf("%d %d %d", &a[i].k, &a[i].price, &a[i].t);
	for(int i = 1; i <= n; i ++) {
		int L = 1, R = i, mid = (L + R) / 2;
		while(L < R) {
			mid = (L + R) / 2;
			if(a[mid].t > a[i].t)
				R = mid;
			else
				L = mid + 1;
		}
		int flag = false;
		for(int j = 1; j < L; j ++) {
//			printf("i = %d, j = %d, flag = %d\n", i, j, flag);
			if(a[i].k == 1 && a[i].price <= a[j].price && a[j].k == 0 && a[i].t - a[j].t <= 45) {
				flag = true, a[j].k = 1;
				break;
			}
		}
		if(!flag)
			ans += a[i].price;
//		printf("\n# # # # # # \ni = %d, flag = %d, ans = %d\n", i, flag, ans);
	}
	printf("%d\n", ans);
	return 0;
}

2023/5/2 17:13
加载中...