Codeforces 248A&B
こどふぉ惨敗。次はもっと解きたい。せめて3問
A
#include <cstdio> #include <algorithm> #include <cstdlib> #include <cstring> using namespace std; int main(){ int n,w[102]; int a100 = 0,a200 = 0; scanf("%d",&n); for(int i = 0;i < n;i++){ scanf("%d",&w[i]); if(w[i] == 100){ a100++; }else{ a200++; } } int flag = true; int a1 = a100 % 2; int a2 = a200 % 2; if(a1 == 1 && a2 == 0){ flag = false; }else if(a1 == 1 && a2 == 1){ flag = false; }else if(a100 == 0 && a2 == 1){ flag = false; } if(flag){ printf("YES\n"); }else{ printf("NO\n"); } return 0; }
B
#include <cstdio> #include <algorithm> #include <cstdlib> #include <cstring> #include <iostream> using namespace std; int main(){ int n,m; int v[100003] = {0}; long long int v1[100003] = {0}; long long int v2[100003] = {0}; scanf("%d",&n); for(int i = 0;i < n;i++){ scanf("%d",&v[i]); } scanf("%d",&m); v1[0] = v[0]; for(int i = 1;i < n;i++){ v1[i] = v1[i-1] + v[i]; } sort(v, v + n); v2[0] = v[0]; for(int i = 1;i < n;i++){ v2[i] = v2[i-1] + v[i]; } for(int i = 0;i < m;i++){ int t,l,r; scanf("%d%d%d",&t,&l,&r); long long int ans = 0; if(t == 1){ ans = v1[r-1] - v1[max(0,l-2)]; if(l == 1) ans += v1[0]; }else{ ans = v2[r-1] - v2[max(0,l-2)]; if(l == 1) ans += v2[0]; } printf("%lld\n",ans); } return 0; }