AFOer刚回游OI,求助橙题
  • 板块学术版
  • 楼主BK小鹿
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/15 22:09
  • 上次更新2024/7/16 08:26:41
查看原帖
AFOer刚回游OI,求助橙题
1345783
BK小鹿楼主2024/7/15 22:09

rt,不仅T飞,还全WA,样例都没过,求教

题目

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100005;

int n;
int cnt;
int res;

struct Kano
{
	int a, b, c;
}g[N];

struct node
{
	int t, pri;
	bool st;
}sale[N];

bool cmp(node a, node b)
{
	if (a.t == b.t)  return a.pri < b.pri;
	return a.t < b.t;
}

int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i ++ )
	{
		scanf("%d%d%d", &g[i].a, &g[i].b, &g[i].c);
		res += g[i].b;
		if (g[i].a == 0)   sale[++ cnt].t = g[i].c, sale[cnt].pri = g[i].b, sale[cnt].st = 1;
	}
	
	for (int i = 1; i <= n; i ++ )
	{
        if (g[i].a == 0) continue;
		if (!cnt)  break;
		sort(sale + 1, sale + cnt + 1, cmp);
        int k = -1;
		for (int j = 1; j <= cnt; j ++ )
          if (sale[j].pri >= g[i].b && abs(sale[j].t - g[i].c) <= 45 && sale[j].st)
          {
            k = j;
            sale[k].st = 0; 
            break;
          }
        

        if (k == -1) continue;
        res -= g[i].b;
        swap(sale[k], sale[cnt]);
        cnt -- ;
	}
    
    printf("%d\n", res);
    return 0;
}
2024/7/15 22:09
加载中...