## Đáp án bài 5,6,9,A ### Bài 5 ```cpp= ``` ### Bài 6 ```cpp= #include <bits/stdc++.h> using namespace std; long long n,a[15][(int)(2e4+5)],t,maxx=0,ans; int main(){ // a tự thêm freopen cin >> t; while(t--){ maxx=0, ans=0; cin >> n; for(int i=1; i<=n; i++){ cin >> a[t][i]; maxx=max(maxx,a[t][i]); } for(int i=1; i<=n; i++){ ans=max(a[t][i]%maxx,ans); } cout << ans << '\n'; } } ``` ### Bài 9 ```cpp= #include <bits/stdc++.h> using namespace std; bool f[(int)(1e7+2)]; long long n,l,r,ans,t,mid; int main(){ // freopen("BAI9.EASY.INP","r",stdin); // freopen("BAI9.EASY.OUT","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); for(int i=1; i<=1e7; i++) f[i]=true; f[1]=false; f[0]=false; for(int i=2; i*i<=1e7; i++){ if(f[i]==true){ for(int j=i*i; j<=1e7; j+=i) f[j]=false; } } cin >> t; while(t--){ cin >> n; while(n--){ if(f[n]==true){ cout << n << '\n'; break; } } } } ``` ### Bài A ```cpp= #include <bits/stdc++.h> using namespace std; long long h,ans; string a,b; int main(){ freopen("BAIA.CLONE.INP","r",stdin); freopen("BAIA.CLONE.OUT","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); getline(cin,a); getline(cin,b); h=0; for(int i=0; i<a.size(); i++){ if(a[i]==b[h]) ans++,h++; if(h==b.size()) h=0; } cout << (ans/(b.size()))*b.size(); } ``` ### Bài B ```cpp= #include<bits/stdc++.h> using namespace std; vector<int>a; vector<int>b; int dem[5]; int main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); freopen("test.inp","r",stdin); freopen("test.out","w",stdout); long long n,k; cin>>n>>k; for(int i=1;i<=n;i++) { long long x; cin>>x; if(x==0)dem[x]++; if(x<0) b.emplace_back(x); else a.emplace_back(x); } sort(a.begin(),a.end()); sort(b.begin(),b.end(),greater<int>()); long long res=0; if(k%2==1) { res+=a[a.size()-1]; k--; a.pop_back(); } while(k>0) { long long phu1=0,phu2=0,phu3=0; if(a.size()>1) phu1=a[a.size()-1]+a[a.size()-2]; if(b.size()>1) phu2=abs(b[b.size()-1])+abs(b[b.size()-2]); if(dem[0]>0) phu3=abs(b[b.size()-1]); if(max({phu1,phu2,phu3})==phu1) { a.pop_back(); a.pop_back(); } else if(max({phu1,phu2,phu3})==phu2) { b.pop_back(); b.pop_back(); } else { b.pop_back(); dem[0]--; } res+=max({phu1,phu2,phu3}); k-=2; } cout<<res; } //code a e nhát sửa quá =)) ``` ## Bonus ### Code lấy từ web cấm a nhớ sửa nha... ## Bài C ```cpp= #include<bits/stdc++.h> #define ll long long #define fi first #define se second using namespace std; const int N = 2e5; ll n, k, x; ll c[N + 4], kt[N + 4]; pair <ll, ll> step[N + 4]; ll d[N + 4]; ll low, high, z = 0; int main() { freopen("BAIC.ASTEPBACKBSTEPSFORWARD.INP", "r", stdin); freopen("BAIC.ASTEPBACKBSTEPSFORWARD.OUT", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin >> n >> k >> x; for (int i = 1; i <= n; i ++) { cin >> c[i]; } for (int i = 1; i <= n; i ++) { cin >> kt[i]; } for (int i = 1; i <= k; i ++) { cin >> step[i].fi >> step[i].se; } for (int i = 1; i <= N; i ++) d[i] = -1e9; d[x] = c[x]; for (int i = x; i <= n; i ++) { if (kt[i] == 1 && d[i] != -1e9) continue; for (int j = 1; j <= k; j ++) { low = i - step[j].fi; high = i - step[j].fi + step[j].se; if (low >= 1 && high <= n && kt[low] == 0 && kt[high] == 0) { // cout << i << " " << low << " " << high << " \n"; d[high] = max(d[high], d[i] + c[high] + c[low]); } } // cout << d[i] + c[n] << "\n"; if (i != n) d[n] = max(d[n], d[i] + c[n]); // cout << "\n"; } cout << d[n]; } ```