You are on page 1of 9

// training 1: ADD

#include <iostream>

using namespace std;


string Sum(string a, string b)
{
while (a.length() < b.length())a = '0' + a;
while (a.length() > b.length())b = '0' + b;

string kq;
int tong, nho=0;
int sokitu = a.length();
for(int i=sokitu-1;i>=0;i--)
{
tong = (a[i] - '0' + (b[i] - '0') + nho);
nho = tong / 10;
kq = char(tong % 10 + '0')+kq;
}
if (nho == 1)
kq = '1' + kq;
return kq;
}
int main()
{
string a,b;
cin>>a>>b;
cout << Sum(a,b);

----------------------------------------------------------------------------------------------------
// training 1: SUBSEQMAX
#include <iostream>
using namespace std;

int main()
{
int n;
cout << "\n";
cin >> n;
int* a =new int [n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
int temp = a[0];
int max = a[0];
for (int i = 1; i < n; i++)
{
temp += a[i];
if (temp < a[i]) temp= a[i];
if (max < temp)max = temp;
}
cout << max << endl;
return 0;

}
//Training 1:ADDMOD
#include <iostream>
#include<math.h>
using namespace std;
long long sodu(int a, int b){
long long int sodu1, sodu2 ,m=1000000007;
sodu1=a%m;
sodu2=b%m;
return (sodu1+sodu2)%m;
}
int main()
{
int a,b;
cin >> a>>b;
cout<<sodu(a,b);
return 0;

}
//Training 1: EXPMOD
#include <iostream>
#include<math.h>
using namespace std;
long long sodu(int a, int b){
long long int m=1000000007;
long long int x=1;
long long int temp=a%m;
for(int i=0;i<b;i++){
x*=temp;
x=x %m;
}
return x;
}
int main()
{
int a,b;
cin >> a>>b;
cout<<sodu(a,b);
return 0;

}
//Training 1: SUMSEQ
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
long long int n,t=0, m=1000000007;
cin>>n;
int* a= new int[n];
for(int i=0; i<n;i++)
cin>>a[i];
for(int b=0;b<n;b++){
t+=a[b];
t=t%m;
}
cout<<t<<endl;
return 0;

}
// training 2:REROAD
#include <iostream>

using namespace std;

int do_gap_ghenh(int arr[], int size)


{
int do_cao_hien_tai, do_gap_ghenh = 1;
do_cao_hien_tai = arr[0];
for (int i = 0; i < size; i++)
{
if (arr[i] != do_cao_hien_tai)
{
do_cao_hien_tai = arr[i];
do_gap_ghenh += 1;
}
}
return do_gap_ghenh;
}

int su_thay_doi_gap_ghenh(int a, int b1, int b2, int c)


{
int gap_ghenh_truoc = 0, gap_ghenh_sau = 0;
if (a != b1)
gap_ghenh_truoc += 1;
if (b1 != c)
gap_ghenh_truoc += 1;
if (a != b2)
gap_ghenh_sau += 1;
if (b2 != c)
gap_ghenh_sau += 1;
return gap_ghenh_sau - gap_ghenh_truoc;
}

int su_thay_doi_gap_ghenh(int b1, int b2, int c)


{
int gap_ghenh_truoc = 0, gap_ghenh_sau = 0;
if (b1 != c)
gap_ghenh_truoc += 1;
if (b2 != c)
gap_ghenh_sau += 1;
return gap_ghenh_sau - gap_ghenh_truoc;
}

int main(int argc, char const *argv[])


{
int so_doan, so_lan_sua;
cin >> so_doan;
int doan[so_doan];
for (int i = 0; i < so_doan; i++)
{
cin >> doan[i];
}
int do_gap_ghenh_ban_dau = do_gap_ghenh(doan, so_doan);
cin >> so_lan_sua;
int sua[so_lan_sua][2];
for (int j = 0; j < so_lan_sua; j++)
{
cin >> sua[j][0];
cin >> sua[j][1];
}
for (int j = 0; j < so_lan_sua; j++)
{
int vi_tri = sua[j][0] - 1;
int gia_tri = sua[j][1];
if (vi_tri == 0)
{
do_gap_ghenh_ban_dau += su_thay_doi_gap_ghenh(doan[vi_tri], gia_tri,
doan[vi_tri + 1]);
}
else if (vi_tri == so_doan - 1)
{
do_gap_ghenh_ban_dau += su_thay_doi_gap_ghenh(doan[vi_tri], gia_tri,
doan[vi_tri - 1]);
}
else
{
do_gap_ghenh_ban_dau += su_thay_doi_gap_ghenh(doan[vi_tri - 1],
doan[vi_tri], gia_tri, doan[vi_tri + 1]);
}
cout << do_gap_ghenh_ban_dau << endl;
doan[vi_tri] = gia_tri;
}
return 0;
}
---------------------------------------------------------------------------------------------------
// Training 2: SIGNAL
#include <iostream>
#include <vector>

using namespace std;

void displayVector(vector<int> v) {
for(int i=0; i<v.size(); i++) {
cout << v[i] << " ";
}
cout<<endl;
}

int main() {

int n, b, input;
vector<int> a;

// input
cin >> n >> b;
for (int i=0; i<n; i++) {
cin >> input;
a.push_back(input);
}

int maxPrefix[n], maxSuffix[n], ans = -1;

// tinh maxPrefix, maxSuffix


maxPrefix[0] = a[0];
maxSuffix[n-1] = a[n-1];

for (int i=1; i<n; i++) {


maxPrefix[i] = max(maxPrefix[i-1], a[i]);

for (int i=n-2; i>=0; i--) {


maxSuffix[i] = max(maxSuffix[i+1], a[i]);
}

// tinh ket qua


for (int i=1; i<n-1; i++) {
if (maxPrefix[i-1] - a[i] >= b && maxSuffix[i+1] - a[i] >= b) {
ans = max(ans, maxPrefix[i-1] - a[i] + maxSuffix[i+1] - a[i]);
}
}

cout << ans;

return 0;
}

You might also like