Submission #528590

# Submission time Handle Problem Language Result Execution time Memory
528590 2022-02-20T16:41:57 Z CSQ31 Akcija (COCI21_akcija) C++17
60 / 110
5000 ms 63252 KB
#pragma GCC optimize("Ofast") 
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define sz(a) (int)(a.size())
#define all(a) a.begin(),a.end()
#define lb lower_bound
#define ub upper_bound
#define owo ios_base::sync_with_stdio(0);cin.tie(0);
#define INF (ll)(1e18)
#define debug(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define time__(d) for(long blockTime = 0; (blockTime == 0 ? (blockTime=clock()) != 0 : false);\
debug("%s time : %.4fs\n", d, (double)(clock() - blockTime) / CLOCKS_PER_SEC))
typedef long long int ll;
typedef long double ld;
typedef pair<ll,ll> PII;
typedef pair<int,int> pii;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> VII;
int n,k;
vector<PII>ans;
PII v[2001],dp[2001][2001];
PII s(int i,int j){
	if(i==n)return {0,0};
	if(dp[i][j].fi != -1)return dp[i][j];
	dp[i][j] = s(i+1,j);
	if(v[i].fi > j){
		PII res = s(i+1,j+1);
		res.fi++;
		res.se+=v[i].se;
		dp[i][j] = max(dp[i][j],res);
	}
	return dp[i][j];
}
void search(int i,int j,ll cnt,ll val){
	if(sz(ans) == k)return;
	if(i==n){
		if(PII(cnt,val) < PII(0,0))ans.pb({cnt,val});
		return;	
	}
	if(s(i,j) < PII(cnt,val))return;
	search(i+1,j,cnt,val);
	if(sz(ans) == k)return;
	if(v[i].fi > j)search(i+1,j+1,cnt-1,val-v[i].se);
}
int main()
{
	cin>>n>>k;
	for(int i=0;i<n;i++){
		cin>>v[i].se>>v[i].fi;
		v[i].se = 1e9-v[i].se;
	}
	sort(v,v+n);
	//for(int i=0;i<n;i++)cout<<v[i].fi<<" "<<v[i].se<<'\n';
	for(int i=0;i<=2000;i++)
		for(int j=0;j<=2000;j++)dp[i][j] = {-1,-1};
	ll mxv = 2e9*2000;
	ll l=-1,r=2e16;
	while(r-l>1){
		ll mid = (l+r)/2;
		ll cnt = mid/mxv,val = mid%mxv;
		search(0,0,cnt,val);
		if(sz(ans) < k)r=mid;
		else l=mid;
		ans.clear();
	}
	ll cnt = r/mxv,val = r%mxv;
	search(0,0,cnt,val);
	while(sz(ans)<k)ans.pb({0,0});
	sort(all(ans));
	for(PII &x:ans){
		x.fi = -x.fi + cnt;
		x.se = x.fi * 1e9 + x.se - val;
	}
	for(auto x:ans)cout<<x.fi<<" "<<x.se<<'\n';
	
}
# Verdict Execution time Memory Grader output
1 Execution timed out 5070 ms 63056 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 5070 ms 63056 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 57 ms 63180 KB Output is correct
2 Correct 59 ms 63180 KB Output is correct
3 Correct 59 ms 63056 KB Output is correct
4 Correct 57 ms 63252 KB Output is correct
5 Correct 62 ms 63180 KB Output is correct
6 Correct 28 ms 63172 KB Output is correct
7 Correct 37 ms 63168 KB Output is correct
8 Correct 28 ms 63144 KB Output is correct
9 Correct 28 ms 63160 KB Output is correct
10 Correct 32 ms 63180 KB Output is correct
11 Correct 24 ms 62900 KB Output is correct
12 Correct 28 ms 62956 KB Output is correct
13 Correct 29 ms 62928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 63052 KB Output is correct
2 Correct 31 ms 63052 KB Output is correct
3 Correct 29 ms 63076 KB Output is correct
4 Correct 31 ms 63044 KB Output is correct
5 Correct 29 ms 63056 KB Output is correct
6 Correct 25 ms 62868 KB Output is correct
7 Correct 27 ms 63004 KB Output is correct
8 Correct 30 ms 62960 KB Output is correct
9 Correct 29 ms 63128 KB Output is correct
10 Correct 31 ms 62884 KB Output is correct
11 Correct 29 ms 62916 KB Output is correct
12 Correct 25 ms 62880 KB Output is correct
13 Correct 28 ms 63044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 62924 KB Output is correct
2 Correct 28 ms 62852 KB Output is correct
3 Correct 27 ms 63084 KB Output is correct
4 Correct 27 ms 62900 KB Output is correct
5 Correct 31 ms 62956 KB Output is correct
6 Correct 32 ms 62896 KB Output is correct
7 Correct 27 ms 62912 KB Output is correct
8 Correct 34 ms 62924 KB Output is correct
9 Correct 27 ms 62976 KB Output is correct
10 Correct 27 ms 62912 KB Output is correct
11 Correct 26 ms 62924 KB Output is correct
12 Correct 25 ms 62896 KB Output is correct
13 Correct 27 ms 62924 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 5070 ms 63056 KB Time limit exceeded
2 Halted 0 ms 0 KB -