169782025-05-19 18:38:30algoproAutózáscpp17Hibás válasz 35/10085ms14756 KiB
// UUID: 9b901a8e-b024-47ad-b9e2-87cd2a848f48
// UUID: f9b27519-2e84-4482-8372-723d5a1506a8
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n; cin>>n;
	int k; cin>>k;
	vector<int> kov(n+1),ar(n+1);
	for(int i=1; i<=n; i++)
		cin>>kov[i]>>ar[i];
	vector<int> pref(n+1);
	for(int i=1; i<=n; i++)
		pref[i]=pref[i-1]+kov[i];
	vector<int> hany(n+1),marad(n+1, k);
	int ans=0;
	deque<int> q;
	for(int i=1; i<=n; i++)
	{
		while(!q.empty() && ar[i]<=ar[q.front()]) q.pop_front();
		q.push_front(i);
		int kell=kov[i];
		int tart=pref[i-1];
		while(kell>0)
		{
			while(!q.empty() && pref[q.back()]<tart-k) q.pop_back();
			int ind=q.back();
			int s=pref[ind]+k-1;
			int maxhany=s-tart;
			marad[ind]=min(marad[ind],maxhany);
			if(marad[ind]>kell)
			{
				hany[ind]+=kell;
				marad[ind]-=kell;
				tart+=kell;
				ans+=kell*ar[ind];
				kell=0;
			}
			else
			{
				hany[ind]+=marad[ind];
				kell-=marad[ind];
				ans+=marad[ind]*ar[ind];
				tart+=marad[ind];
				marad[ind]=0;
				q.pop_back();
			}
		}
	}
	vector<array<int, 2>> s;
	for(int i=1; i<=n; i++)
		if(hany[i]>0) s.push_back({i,hany[i]});
	cout<<ans<<" "<<s.size()<<"\n";
	for(auto &[a,b]:s)
		cout<<a<<" "<<b<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base35/100
1Elfogadva0/01ms508 KiB
2Hibás válasz0/068ms12084 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms500 KiB
8Elfogadva5/51ms316 KiB
9Hibás válasz0/51ms384 KiB
10Hibás válasz0/51ms316 KiB
11Hibás válasz0/514ms2908 KiB
12Hibás válasz0/524ms4304 KiB
13Elfogadva5/519ms3912 KiB
14Hibás válasz0/539ms7396 KiB
15Hibás válasz0/552ms9580 KiB
16Hibás válasz0/550ms8880 KiB
17Hibás válasz0/552ms9140 KiB
18Hibás válasz0/548ms8624 KiB
19Hibás válasz0/579ms13240 KiB
20Hibás válasz0/579ms13816 KiB
21Hibás válasz0/585ms14252 KiB
22Hibás válasz0/583ms14756 KiB