Submission #528594

# Submission time Handle Problem Language Result Execution time Memory
528594 2022-02-20T16:47:34 Z CSQ31 Akcija (COCI21_akcija) C++17
60 / 110
5000 ms 63244 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(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';
    memset(dp,-1,sizeof(dp));
	ll mxv = 2e9*2000;
	ll l=-1,r=2e16;
	while(r-l>1){
		ll mid = r+l>>1;
		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 = cnt - x.fi;
		x.se = x.fi * 1e9 + x.se - val;
	}
	for(auto x:ans)cout<<x.fi<<" "<<x.se<<'\n';
	
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:60:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   60 |   ll mid = r+l>>1;
      |            ~^~
# Verdict Execution time Memory Grader output
1 Execution timed out 5053 ms 63052 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 5053 ms 63052 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 55 ms 63044 KB Output is correct
2 Correct 64 ms 63168 KB Output is correct
3 Correct 53 ms 63156 KB Output is correct
4 Correct 55 ms 63244 KB Output is correct
5 Correct 59 ms 63180 KB Output is correct
6 Correct 31 ms 63108 KB Output is correct
7 Correct 35 ms 63180 KB Output is correct
8 Correct 29 ms 63104 KB Output is correct
9 Correct 26 ms 63116 KB Output is correct
10 Correct 33 ms 63160 KB Output is correct
11 Correct 24 ms 62868 KB Output is correct
12 Correct 24 ms 62896 KB Output is correct
13 Correct 25 ms 62920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 63052 KB Output is correct
2 Correct 38 ms 63048 KB Output is correct
3 Correct 29 ms 63044 KB Output is correct
4 Correct 30 ms 63052 KB Output is correct
5 Correct 31 ms 63044 KB Output is correct
6 Correct 24 ms 62880 KB Output is correct
7 Correct 26 ms 62976 KB Output is correct
8 Correct 27 ms 63020 KB Output is correct
9 Correct 28 ms 63044 KB Output is correct
10 Correct 23 ms 62976 KB Output is correct
11 Correct 24 ms 62924 KB Output is correct
12 Correct 25 ms 62900 KB Output is correct
13 Correct 29 ms 62992 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 62936 KB Output is correct
2 Correct 28 ms 62924 KB Output is correct
3 Correct 35 ms 62884 KB Output is correct
4 Correct 29 ms 62920 KB Output is correct
5 Correct 27 ms 62924 KB Output is correct
6 Correct 27 ms 62904 KB Output is correct
7 Correct 26 ms 62984 KB Output is correct
8 Correct 25 ms 62924 KB Output is correct
9 Correct 28 ms 62916 KB Output is correct
10 Correct 27 ms 62892 KB Output is correct
11 Correct 26 ms 62956 KB Output is correct
12 Correct 28 ms 62932 KB Output is correct
13 Correct 27 ms 62924 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 5053 ms 63052 KB Time limit exceeded
2 Halted 0 ms 0 KB -