File tree Expand file tree Collapse file tree 4 files changed +278
-0
lines changed
2022/Contests/Div 3/828/Programs Expand file tree Collapse file tree 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