Submission #1112175

#TimeUsernameProblemLanguageResultExecution timeMemory
1112175PagodePaivaFortune Telling 2 (JOI14_fortune_telling2)C++17
4 / 100
3068 ms2440 KiB
#include<bits/stdc++.h> using namespace std; const int N = 40010; int dp[N][2]; int main(){ int n, k; cin >> n >> k; vector <pair <long long,long long>> v; for(int i = 1;i <= n;i++){ long long a, b; cin >> a >> b; v.push_back({a, b}); } vector <long long> qr; for(int i = 1;i <= k;i++){ long long x; cin >> x; qr.push_back(x); } long long res = 0; for(int i = 1;i <= n;i++){ dp[k][0] = dp[k][1] = 0; for(int j = k-1;j >= 0;j--){ dp[j][0] = (min(v[i-1].first, v[i-1].second) <= qr[j] ? dp[j+1][1]+1 : dp[j+1][0]); dp[j][1] = (max(v[i-1].first, v[i-1].second) <= qr[j] ? dp[j+1][0]+1 : dp[j+1][1]); } int a = v[i-1].first, b = v[i-1].second; if(a == min(a, b)){ if(dp[0][0] % 2 == 0){ res += a; } else{ res += b; } } else{ if(dp[0][1]%2 == 0){ res += a; } else{ res += b; } } //cout << dp[0][0]<< ' ' << dp[0][1] << '\n'; } cout << res << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...