제출 #1346250

#제출 시각아이디문제언어결과실행 시간메모리
1346250MuhammadSaramHokej (COCI17_hokej)C++20
120 / 120
75 ms13056 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define endl '\n'

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL), cout.tie(NULL);

	int m,n;
	cin>>m>>n;
	vector<array<int,3>> v,sub;
	for (int i=0;i<n;i++)
	{
		int x,y;
		cin>>x>>y;y=min(y,m);
		v.push_back({x,y,i+1});
	}
	sort(v.rbegin(),v.rend());
	int ans=0, su=0;
	vector<pair<int,int>> v2;
	for (auto e:v)
	{
		int mn=min(e[1],6*m-su);
		ans+=mn*e[0];
		if (!mn) break;
		v2.push_back({mn,e[2]});
		su+=mn;
	}
	sort(v2.begin(),v2.end());
	vector<pair<int,int>> v1[6];
	for (int j=0;j<6;j++)
	{
		su=0;
		while (su<m)
		{
			pair<int,int> p=v2.back();
			int mn=min(p.first,m-su);
			v1[j].push_back({p.second,mn});
			su+=mn;
			v2.back().first-=mn;
			if (!v2.back().first) v2.pop_back();
		}
	}
	cout<<ans<<endl;
	for (int j=0;j<6;j++)
		cout<<v1[j][0].first<<' ';
	cout<<endl;
	for (int j=0;j<6;j++)
	{
		int su=v1[j][0].second;
		for (int i=1;i<v1[j].size();i++)
			sub.push_back({su,v1[j][i-1].first,v1[j][i].first}), su+=v1[j][i].second;
	}
	sort(sub.begin(),sub.end());
	cout<<sub.size()<<endl;
	for (auto e:sub)
		cout<<e[0]<<' '<<e[1]<<' '<<e[2]<<endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...