intさわだんのBlack History

刹那的レジェンドになりたい。

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;
		
	
}