竞赛讨论区 > 题目n/m范围
头像
Tiketiskte
发布于 2020-06-05 20:43
+ 关注

题目n/m范围

大佬们, 这个题n数据 1<=n<=50000 为什么我开到了5e4 + 5还是会发生段错误啊qwq~ 开到5e5 + 5 也不行 要5e6 + 5才可以qwq
**
* Copyright(c)
* Author : tiketiskte
**/
#include <bits/stdc++.h>
#define IOS {ios::sync_with_stdio(false);cin.tie(0);}
#define ll long long
#define SZ(X) (int)X.size()
#define INF 0x3f3f3f3f
 
using namespace std;
 
const int maxn = 5e5 + 5;//这里辣~
struct node {
   int id;
   int value;
}sweet[maxn];
int T;
int n, m;
int c[maxn], d[maxn];
int main()
{
   IOS
   cin >> T;
   while(T--) {
      memset(d, 0, sizeof(d));
      memset(c, 0, sizeof(c));
      memset(sweet, 0, sizeof(sweet));
      cin >> n >> m;
      for(int i = 1; i <= n; i++) {
         cin >> sweet[i].id >> sweet[i].value;
      }
      for(int i = 1; i <= m; i++) {
         cin >> c[i];
         d[1]++;
         d[c[i] + 1]--;
      }
      for(int i = 1; i <= n; i++) {
         d[i] = d[i - 1] + d[i];
         sweet[i].value += d[i];
      }
      ll max1 = -INF, max2 = -INF;
      ll ans = 0;
      for(int i = n; i > 0; i--) {
         if(sweet[i].id) {
            max1 = max(max1, (ll)sweet[i].value);
            if(sweet[i].value >= max2) {
               ans++;
            }
         } else {
            max2 = max(max2, (ll)sweet[i].value);
            if(sweet[i].value >= max1) {
               ans++;
            }
         }
      }
      cout << ans << endl;
   }
   system("pause");
   return 0;
}

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐