Codeforces Round #558 (div. 2)
bc两题居然都有小题,有点烦。
题目链接:http://codeforces.com/contest/1163
A:
本场唯一温暖人心。
1 /* basic header */ 2 #include <iostream> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <string> 6 #include <cstring> 7 #include <cmath> 8 #include <cstdint> 9 #include <climits> 10 #include <float.h> 11 /* STL */ 12 #include <vector> 13 #include <set> 14 #include <map> 15 #include <queue> 16 #include <stack> 17 #include <algorithm> 18 #include <array> 19 #include <iterator> 20 /* define */ 21 #define ll long long 22 #define dou double 23 #define pb emplace_back 24 #define mp make_pair 25 #define fir first 26 #define sec second 27 #define sot(a,b) sort(a+1,a+1+b) 28 #define rep1(i,a,b) for(int i=a;i<=b;++i) 29 #define rep0(i,a,b) for(int i=a;i<b;++i) 30 #define repa(i,a) for(auto &i:a) 31 #define eps 1e-8 32 #define int_inf 0x3f3f3f3f 33 #define ll_inf 0x7f7f7f7f7f7f7f7f 34 #define lson curPos<<1 35 #define rson curPos<<1|1 36 /* namespace */ 37 using namespace std; 38 /* header end */ 39 40 int n, m; 41 42 int main() 43 { 44 scanf("%d%d", &n, &m); 45 if (!m) puts("1"); 46 else 47 { 48 if (m <= n / 2) printf("%d ", m); 49 else printf("%d ", n - m); 50 } 51 return 0; 52 }
B easy & hard:
读懂题之后其实也挺傻的。
1 /* basic header */ 2 #include <iostream> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <string> 6 #include <cstring> 7 #include <cmath> 8 #include <cstdint> 9 #include <climits> 10 #include <float.h> 11 /* STL */ 12 #include <vector> 13 #include <set> 14 #include <map> 15 #include <queue> 16 #include <stack> 17 #include <algorithm> 18 #include <array> 19 #include <iterator> 20 /* define */ 21 #define ll long long 22 #define dou double 23 #define pb emplace_back 24 #define mp make_pair 25 #define fir first 26 #define sec second 27 #define sot(a,b) sort(a+1,a+1+b) 28 #define rep1(i,a,b) for(int i=a;i<=b;++i) 29 #define rep0(i,a,b) for(int i=a;i<b;++i) 30 #define repa(i,a) for(auto &i:a) 31 #define eps 1e-8 32 #define int_inf 0x3f3f3f3f 33 #define ll_inf 0x7f7f7f7f7f7f7f7f 34 #define lson curPos<<1 35 #define rson curPos<<1|1 36 /* namespace */ 37 using namespace std; 38 /* header end */ 39 40 const int maxn = 1e5 + 10; 41 int n, a[maxn], cnt[maxn], b[maxn], used, ans = 1; 42 43 int main() 44 { 45 scanf("%d", &n); 46 rep1(i, 1, n) scanf("%d", &a[i]); 47 rep1(i, 1, n) 48 { 49 if (!cnt[a[i]]) used++; 50 b[cnt[a[i]]]--; cnt[a[i]]++; b[cnt[a[i]]]++; 51 if (b[cnt[a[i]]] == used - 1 && b[cnt[a[i]] + 1] == 1) ans = i; 52 if (b[cnt[a[i]]] == used - 1 && b[1] == 1) ans = i; 53 if (b[cnt[a[i]]] == 1 && b[cnt[a[i]] - 1] == used - 1) ans = i; 54 if (b[cnt[a[i]]] == used && i != n) ans = i + 1; 55 } 56 printf("%d ", ans); 57 return 0; 58 }