比赛 2026.5.30 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 雨和卡布奇诺 最终得分 100
用户昵称 VTXE 运行时间 1.632 s
代码语言 C++ 内存使用 26.23 MiB
提交时间 2026-05-30 09:32:03
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long

struct node{
	ll id,val;
};
vector <node> e[410000];
ll n;
ll t[210000],u[210000];
ll m;
map <ll,ll> nm;
ll l[210000],k[210000],num[210000];
vector<ll> c[210000],d[210000],anss;
ll ans;
ll cc[210000];

bool cmp(node aa,node bb){
	return aa.val<bb.val;
}

int main(){
    freopen("Cappuccino.in","r",stdin);
    freopen("Cappuccino.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for (int i=1;i<=n;i++){
		cin>>t[i]>>u[i];
		nm[t[i]]=i;
	}
	cin>>m;
	for (int i=1;i<=m;i++){
		cin>>l[i];
		for (int j=1;j<=l[i];j++){
			ll a,b;
			cin>>a>>b;
			if (nm[a]==0) nm[a]=++n;
			if (u[nm[a]]>=b) num[i]++;
			else e[nm[a]].push_back({i,b});
		}
		if (num[i]==l[i]){
			anss.push_back(i);
		}
		cin>>k[i];
		for (int j=1;j<=k[i];j++){
			ll x,y;
			cin>>x>>y;
			if (nm[x]==0) nm[x]=++n;
			c[i].push_back(x);
			d[i].push_back(y);
		}
	}
	for (int i=1;i<=n;i++){
		sort(e[i].begin(),e[i].end(),cmp);
	}
	for (int bbb=0;bbb<anss.size();bbb++){
		ans++;
		ll o=anss[bbb];
		for (int i=0;i<k[o];i++){
			ll bj=nm[c[o][i]];
			u[bj]+=d[o][i];
			while (cc[bj]<e[bj].size()){
				if (u[bj]>=e[bj][cc[bj]].val){
					num[e[bj][cc[bj]].id]++;
					if (num[e[bj][cc[bj]].id]==l[e[bj][cc[bj]].id]){
						anss.push_back(e[bj][cc[bj]].id);
					}
					cc[bj]++;
				}else break;
			}
		}
	}
	cout<<ans;
	return 0;
}