Submission #1200867

#TimeUsernameProblemLanguageResultExecution timeMemory
1200867nguynSemiexpress (JOI17_semiexpress)C++20
48 / 100
548 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ll long long 
#define F first
#define S second
#define pb push_back 
#define pii pair<int,int>

const int N = 3e3 + 5;

int n, m, k;
int a, b, c;
int t, s[N];

signed main(){
    ios_base::sync_with_stdio(false) ; 
    cin.tie(0) ; cout.tie(0) ; 
    if (fopen("INP.INP" ,"r")) {
        freopen("INP.INP" ,"r" , stdin) ;
        freopen("OUT.OUT" , "w" , stdout) ;
    }
    cin >> n >> m >> k;
    k -= m;
    cin >> a >> b >> c;
    cin >> t; 
    for (int i = 1; i <= m; i++) {
    	cin >> s[i]; 
    }
    int res = -1;
    vector<int> vec;
    for (int i = 1; i < m; i++) {
    	int cost = (s[i] - 1) * b;
    	if (cost > t) break; 
    	int l = s[i];
    	int r = s[i + 1];
    	int rem = t - cost; 
    	int nxt = min(l + (rem / a) + 1, r);
    	// cout << i << ' ' << nxt << ":" << endl;
    	res += nxt - l;
    	while(1) {
    		l = nxt; 
    		int cur_rem = rem - (l - s[i]) * c;
    		if (cur_rem < 0) break; 
    		nxt = min(l + (cur_rem / a) + 1, r);
    		// cout << l << ' ' << nxt << endl;
    		vec.pb(nxt - l); 
    		if (nxt >= r) {
    			break; 
    		}
    	}
    }  
    if ((n - 1) * b <= t) res++; 
    sort(vec.begin(), vec.end()); 
    // for (int i : vec) {
    // 	cout << i << ' ';
    // } cout << endl;
    for (int i = vec.size() - 1; i >= max(0ll, (int)vec.size() - k); i--) {
    	res += vec[i]; 
    }
    cout << res; 
}

Compilation message (stderr)

semiexpress.cpp: In function 'int main()':
semiexpress.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen("INP.INP" ,"r" , stdin) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
semiexpress.cpp:22:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |         freopen("OUT.OUT" , "w" , stdout) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...