-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdiff_Main.cpp
More file actions
54 lines (51 loc) · 1.24 KB
/
Copy pathdiff_Main.cpp
File metadata and controls
54 lines (51 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
diff --git a/CodeJam/Main.cpp b/examples/2021/Round1A/B/Main.cpp
index 2150379..368e80f 100644
--- a/CodeJam/Main.cpp
+++ b/examples/2021/Round1A/B/Main.cpp
@@ -1570,11 +1570,49 @@ void init(){
cin >> T;
}
+ll N, S;
+v(ll) Pi, Ni;
+
void readInput(){
+ cin >> N;
+ Pi.resize(N);
+ Ni.resize(N);
+ S = 0;
+ forn(i, N){
+ cin >> Pi[i] >> Ni[i];
+ S += Pi[i] * Ni[i];
+ }
+ lg(S);
}
// write to COMM_TYPE result
void calcFunction() {
+ ll maxprodcards = log2i(S);
+ lg(maxprodcards);
+ result = 0;
+ ll start_sum = S-1;
+ while(start_sum >= S - maxprodcards * 499 && start_sum >= 1){
+ ll left_factors = start_sum;
+ ll sum_of_factors = 0;
+ forn(i, N){
+ ll ni = 0;
+ while(left_factors % Pi[i] == 0){
+ ni++;
+ left_factors /= Pi[i];
+ sum_of_factors += Pi[i];
+ }
+ if(ni > Ni[i]){
+ sum_of_factors = 0;
+ break;
+ }
+ if(left_factors == 1) break;
+ }
+ if(start_sum == S-sum_of_factors && left_factors == 1){
+ result = start_sum;
+ break;
+ }
+ start_sum--;
+ }
}
} // namespace task