File tree Expand file tree Collapse file tree 2 files changed +101
-0
lines changed Expand file tree Collapse file tree 2 files changed +101
-0
lines changed Original file line number Diff line number Diff line change 1+ import sys
2+
3+ num = [int (elem ) for elem in sys .stdin .readline ().strip ().split ("," )]
4+ sumforward = [0 for i in range (len (num ) + 1 )]
5+ sumbackwad = [0 for i in range (len (num ) + 1 )]
6+
7+ ss = 0
8+
9+
10+ for i in range (len (num )):
11+ sumforward [i + 1 ] = sumforward [i ] + num [i ]
12+ i = len (num )
13+ while (i > 0 ):
14+ sumbackwad [i - 1 ] = sumbackwad [i ] + num [i - 1 ]
15+ i -= 1
16+
17+ hasresult = False
18+ for i in range (len (num )):
19+ if (sumforward [i ] == sumbackwad [i + 1 ]):
20+ print (num [i ])
21+ hasresult = True
22+ break
23+
24+ if not hasresult :
25+ print ("False" )
Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < vector>
3+ #include < algorithm>
4+ #include < queue>
5+ #include < sstream>
6+
7+ using namespace std ;
8+
9+ int main (void )
10+ {
11+ vector<int > a;
12+ vector<int > b;
13+ int temp;
14+ char c;
15+ while (cin >> temp)
16+ {
17+ a.push_back (temp);
18+ cin >> c;
19+ if (c == ' -' ) break ;
20+ }
21+ while (cin >> temp)
22+ {
23+ b.push_back (temp);
24+ cin >> c;
25+ if (c == ' :' ) break ;
26+ }
27+ int k;
28+ cin >> k;
29+
30+ sort (a.begin (), a.end (), [](int ta, int tb){return ta > tb;});
31+ sort (b.begin (), b.end (), [](int ta, int tb){return ta > tb;});
32+
33+ auto comp = [&](const vector<int >& a, const vector<int >& b) {
34+ return a.back () < b.back ();
35+ };
36+ typedef priority_queue<vector<int >, vector<vector<int >>, decltype (comp)> pq_t ;
37+ pq_t pq (comp);
38+ for (int i = 0 ; i < b.size (); ++i)
39+ {
40+ pq.push ({i, 0 , b[i] + a[0 ]});
41+ }
42+
43+ int count = 0 ;
44+ stringstream ss;
45+ while (!pq.empty ())
46+ {
47+ const vector<int > &curMax = pq.top ();
48+ int ib = curMax[0 ];
49+ int ia = curMax[1 ];
50+ pq.pop ();
51+ int temp = 0 ;
52+ int i = 0 ;
53+ for (i = ia; i < a.size (); ++i)
54+ {
55+ temp = b[ib] + a[i];
56+ if (temp >= pq.top ()[2 ])
57+ {
58+ ss << temp << ' ,' ;
59+ count += 1 ;
60+ if (count == k)
61+ {
62+ break ;
63+ }
64+ }
65+ else
66+ {
67+ pq.push ({ib, i, temp});
68+ break ;
69+ }
70+ }
71+ if (count == k) break ;
72+ }
73+ string result = ss.str ();
74+ cout << result.substr (0 , result.size () - 1 ) << endl;
75+ return 0 ;
76+ }
You can’t perform that action at this time.
0 commit comments