Skip to content

Commit d98773b

Browse files
Add files via upload
1 parent dfa5912 commit d98773b

File tree

4 files changed

+278
-0
lines changed

4 files changed

+278
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <map>
5+
6+
#define all(v) (v).begin() + 1, (v).end()
7+
using namespace std;
8+
9+
int power_2(int n)
10+
{
11+
int power = 0;
12+
13+
while(n%2 == 0 && n > 0)
14+
{
15+
power++;
16+
n /= 2;
17+
}
18+
19+
return power;
20+
}
21+
22+
void solve()
23+
{
24+
int no_of_elements;
25+
cin >> no_of_elements;
26+
27+
vector <int> A(no_of_elements + 1);
28+
for(int i = 1; i <= no_of_elements; i++)
29+
{
30+
cin >> A[i];
31+
}
32+
33+
vector <int> index_power(no_of_elements + 1);
34+
for(int i = 1; i <= no_of_elements; i++)
35+
{
36+
index_power[i] = power_2(i);
37+
}
38+
39+
sort(all(index_power));
40+
reverse(all(index_power));
41+
42+
int total_power = 0;
43+
for(int i = 1; i <= no_of_elements; i++)
44+
{
45+
total_power += power_2(A[i]);
46+
}
47+
48+
int no_of_operations = 0;
49+
for(int i = 1; i <= no_of_elements && total_power < no_of_elements && index_power[i] > 0; i++)
50+
{
51+
total_power += index_power[i];
52+
no_of_operations++;
53+
}
54+
55+
const int NOT_POSSIBLE = -1;
56+
cout << (total_power < no_of_elements ? NOT_POSSIBLE : no_of_operations) << "\n";
57+
}
58+
59+
int main()
60+
{
61+
int no_of_test_cases;
62+
cin >> no_of_test_cases;
63+
64+
while(no_of_test_cases--)
65+
solve();
66+
67+
return 0;
68+
}
69+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <map>
5+
6+
using namespace std;
7+
8+
void solve()
9+
{
10+
int no_of_elements, no_of_queries;
11+
cin >> no_of_elements >> no_of_queries;
12+
13+
long long even_sum = 0, odd_sum = 0;
14+
long long even_count = 0, odd_count = 0;
15+
vector <int> A(no_of_elements + 1);
16+
for(int i = 0; i < no_of_elements; i++)
17+
{
18+
cin >> A[i];
19+
20+
if(A[i]%2 == 0)
21+
{
22+
even_sum += A[i];
23+
even_count++;
24+
}
25+
else if(A[i]%2 == 1)
26+
{
27+
odd_sum += A[i];
28+
odd_count++;
29+
}
30+
}
31+
32+
for(int i = 1; i <= no_of_queries; i++)
33+
{
34+
const int ADD_EVEN = 0, ADD_ODD = 1;
35+
long long query, value;
36+
cin >> query >> value;
37+
38+
switch(query)
39+
{
40+
case ADD_EVEN : {
41+
if(value%2 == 0)
42+
{
43+
even_sum += even_count*value;
44+
}
45+
else
46+
{
47+
even_sum += even_count*value;
48+
odd_sum += even_sum;
49+
even_sum = 0;
50+
51+
odd_count += even_count;
52+
even_count = 0;
53+
}
54+
55+
break;
56+
}
57+
58+
case ADD_ODD : {
59+
if(value%2 == 0)
60+
{
61+
odd_sum += odd_count*value;
62+
}
63+
else
64+
{
65+
odd_sum += odd_count*value;
66+
even_sum += odd_sum;
67+
odd_sum = 0;
68+
69+
even_count += odd_count;
70+
odd_count = 0;
71+
}
72+
73+
break;
74+
75+
}
76+
}
77+
78+
cout << even_sum + odd_sum << "\n";
79+
}
80+
}
81+
82+
int main()
83+
{
84+
int no_of_test_cases;
85+
cin >> no_of_test_cases;
86+
87+
while(no_of_test_cases--)
88+
solve();
89+
90+
return 0;
91+
}
92+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <map>
5+
6+
using namespace std;
7+
8+
void solve()
9+
{
10+
int no_of_elements;
11+
cin >> no_of_elements;
12+
13+
vector <int> A(no_of_elements + 1);
14+
for(int i = 0; i < no_of_elements; i++)
15+
{
16+
cin >> A[i];
17+
}
18+
19+
string S;
20+
cin >> S;
21+
22+
map <int, char> dictionary;
23+
int possible = true;
24+
for(int i = 0; i < S.size(); i++)
25+
{
26+
if(dictionary[A[i]] != 0)
27+
{
28+
if(dictionary[A[i]] != S[i])
29+
{
30+
possible = false;
31+
break;
32+
}
33+
}
34+
35+
dictionary[A[i]] = S[i];
36+
}
37+
38+
cout << (possible ? "YES" : "NO") << "\n";
39+
}
40+
41+
int main()
42+
{
43+
int no_of_test_cases;
44+
cin >> no_of_test_cases;
45+
46+
while(no_of_test_cases--)
47+
solve();
48+
49+
return 0;
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
#include <map>
5+
6+
using namespace std;
7+
8+
void solve()
9+
{
10+
int no_of_elements;
11+
char symbol;
12+
cin >> no_of_elements >> symbol;
13+
14+
string S;
15+
cin >> S;
16+
17+
const char GREEN = 'g';
18+
int first_green = 0;
19+
for(int i = 0; i < no_of_elements; i++)
20+
{
21+
if(S[i] == GREEN)
22+
{
23+
first_green = i;
24+
break;
25+
}
26+
}
27+
28+
const int NO_GREEN_TO_RIGHT = -1;
29+
vector <int> nearest_green(no_of_elements + 1, NO_GREEN_TO_RIGHT);
30+
for(int i = no_of_elements - 1; i >= 0; i--)
31+
{
32+
nearest_green[i] = (S[i] == GREEN ? i : nearest_green[i + 1]);
33+
34+
if(nearest_green[i] == NO_GREEN_TO_RIGHT)
35+
{
36+
nearest_green[i] = first_green;
37+
}
38+
39+
//cout << "nearest green " << i << " = " << nearest_green[i] << "\n";
40+
}
41+
42+
int answer = 0;
43+
for(int i = 0; i < no_of_elements; i++)
44+
{
45+
if(S[i] == symbol)
46+
{
47+
int distance = (nearest_green[i] >= i ? nearest_green[i] - i : S.size() - i + first_green);
48+
49+
answer = max(answer, distance);
50+
}
51+
}
52+
53+
cout << answer << "\n";
54+
}
55+
56+
int main()
57+
{
58+
int no_of_test_cases;
59+
cin >> no_of_test_cases;
60+
61+
while(no_of_test_cases--)
62+
solve();
63+
64+
return 0;
65+
}
66+
67+

0 commit comments

Comments
 (0)