File tree 4 files changed +278
-0
lines changed
2022/Contests/Div 3/828/Programs
4 files changed +278
-0
lines changed Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments