第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(瀋陽)
阿新 • • 發佈:2021-11-08
思路:
從大到小排序,把前k個數加起來
#include <bits/stdc++.h> using namespace std; const int N = 1010; int a[N]; int main() { int n, k; cin >> n >> k; for(int i = 0; i < n; i ++ ) cin >> a[i]; sort(a, a + n, greater<int>()); long long sum = 0;for(int i = 0; i < k; i ++ ) sum += a[i]; cout << sum << endl; return 0; }
思路:
記錄一下原陣列和排好序後的陣列,並記錄其字首和,每次字首和相等的時候就答案數加一
#include <bits/stdc++.h> using namespace std; const int N = 1000010; int a[N], b[N]; int main() { int n; cin >> n;for(int i = 0; i < n; i ++ ) cin >> a[i], b[i] = a[i]; sort(a, a + n); long long suma = 0, sumb = 0, res = 0; for(int i = 0; i < n; i ++ ) { suma += a[i]; sumb += b[i]; if(suma == sumb) res ++ ; } cout << res << endl; return0; }