intさわだんのBlack History

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

JOI Mock Contest 2014-2015

4完だった
ソースだけ適当にはっとく
今日のとおりできれば予選はきっと通ると思う

1

#include <bits/stdc++.h>

using namespace std;

int main(){
	int a,b,c,d;
	cin >> a >> b >> c >> d;
	int ans = 0;
	int ta = c*d - a*b;
	ans = ta / b;
	if(ta % b != 0)ans++;
	if(ta < 0)ans=0;
	cout << ans << endl;
	return 0;
}

2

#include <bits/stdc++.h>

using namespace std;
int n,c,d[303];
int main(){
	cin >> n >> c;

	while(n--){
		int from,to;
		cin >> from >> to;
		for(int i = from;i <= to;i++){
			if(d[i] < c){
				cout << i << endl;
				d[i]++;
				goto out;
			}
		}
		cout << -1 << endl;
		out:
		;
	}
	return 0;
}

3

#include <bits/stdc++.h>

using namespace std;
int n,c,d,k,g,ans;
int ki[120],gu[120];
int main(){
	cin >> n >> c >> d;
	for(int i = 0;i < n;i++){
		int ha;
		cin >> ha;
		if(ha % 2 == 0){
			cin >> gu[g++];
		}else{
			cin >> ki[k++];
		}
	}
	sort(gu,gu+g);
	sort(ki,ki+k);
	for(int i = 1;i < g;i++){
		gu[i] += gu[i-1];
	}
	for(int i = 1;i < k;i++){
		ki[i] += ki[i-1];
	}

	for(int i = 1;i <= n;i++){
		for(int j = 0;j <= min(i,k);j++){
			int gg = i-j;
			if(gg > g)continue;
			int tmpans;
			if(j == 0){
				tmpans = d*i-gu[gg-1];
			}else if(gg == 0){
				if(j%2 == 0){
					tmpans = d*i-ki[j-1];
				}else{
					tmpans = c*i-ki[j-1];
				}
			}else{
				if(j%2 == 0){
					tmpans = d*i-ki[j-1]-gu[gg-1];
				}else{
					tmpans = c*i-ki[j-1]-gu[gg-1];
				}
			}
			ans = max(ans,tmpans);
		}
	}
	cout << ans << endl;
	return 0;
}

4

#include <bits/stdc++.h>

using namespace std;
int n,m,p;
int dp[3][1000004];
int main(){
	scanf("%d%d%d",&n,&m,&p);
	for(int i = 1;i <= m;i++){
		int ch;
		scanf("%d",&ch);
		for(int j = 1;j <= n;j++){
			if(ch == j && j == p-1){
				dp[i%2][j] = 1;
			}else if(ch == j-1 && j == p+1){
				dp[i%2][j] = 1;
			}
			dp[i%2][j] =max(dp[(i-1)%2][j],dp[i%2][j]);
			if(ch == j && dp[(i-1)%2][j+1] > 0){
				dp[i%2][j] = max(dp[i%2][j],dp[(i-1)%2][j+1]+1);
			}else if(ch == j-1 && dp[(i-1)%2][j-1] > 0){
				dp[i%2][j] = max(dp[i%2][j],dp[(i-1)%2][j-1]+1);
			}
		}
	}
	printf("%d\n",dp[m%2][1]);
	return 0;
}