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