精進ができない
そのまんま
0517
#include <cstdio> #include <algorithm> using namespace std; int n, k; int card[100000]; int main() { while (scanf("%d%d",&n,&k)) { if (!n&&!k) break; for (int i=0; i<k; i++) scanf("%d",&card[i]); sort(card, card+k); int res=0, cnt=1; if (card[0]) { for (int i=1; i<k; i++) { if (card[i]-card[i-1]==1) cnt++; else { res=max(res,cnt); cnt=1; } } printf("%d\n",max(res,cnt)); } else { int flag=1, pos=0; for (int i=2; i<k; i++) { if (card[i]-card[i-1]==1) { cnt++; } else if (flag&&card[i]-card[i-1]==2) { pos=i; flag=0; cnt+=2; } else if (card[i]-card[i-1]==2) { res=max(res,cnt); cnt=1; i=pos; flag=1; } else { res=max(res,cnt); cnt=1; flag=1; } } printf("%d\n",max(res,cnt)); } } }
0110
左端に0がくることはないと書いときながら左端のXに0を代入しなければならないケースがあるそうです。
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; string num[3], num2[3]; bool add(string a, string b, string res) { //if (a[0]=='0'||b[0]=='0'||res[0]=='0') return false; string ret=""; int as=a.size(),bs=b.size(); int c=0; for (int i=0; i<max(as,bs); i++) { int t=c; if (i<as) t+=a[as-i-1]-'0'; if (i<bs) t+=b[bs-i-1]-'0'; c=t/10; t%=10; ret+=t+'0'; } if (c) ret+='1'; reverse(ret.begin(), ret.end()); return ret==res; } int main() { string alpha; while (cin>>alpha) { num[0]=""; num[1]=""; num[2]=""; int pos=0; for (int i=0; i<alpha.length(); i++) { if (alpha[i]=='+'||alpha[i]=='=') { pos++; } else { num[pos]+=alpha[i]; } } int res=-1; for (int i=0; i<=9; i++) { num2[0]=num[0]; num2[1]=num[1]; num2[2]=num[2]; for (int j=0; j<3; j++) { for (int k=0; k<num2[j].length(); k++) { if (num2[j][k]=='X') num2[j][k]=(i+'0'); } } if (add(num2[0],num2[1],num2[2])) { res=i; } } if (res==-1) puts("NA"); else printf("%d\n",res); } }
0107
今日数学的な判定方法思いついて枠組みに当てはめました。
#include <cstdio> #include <algorithm> using namespace std; bool ok(int a, int b, int c) { if (a*a+b*b<c*c) return true; else return false; } int main() { int row,col,high; int n; int dir; while (scanf("%d%d%d",&row,&col,&high)) { if (row==0&&col==0&&high==0) break; scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d",&dir); dir*=2; if (ok(row,col,dir)||ok(row,high,dir)||ok(col,high,dir)) { printf("OK\n"); } else { printf("NA\n"); } } } }
0124
入力順ってのがかなり工夫必要
#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; int main() { int n, f=0; while (cin>>n) { if (!n) break; if (f) cout<<endl; else f=1; vector<int> m; map<int, vector<string> > f; for (int i=0; i<n; i++) { string name; cin>>name; int a,b,c; cin>>a>>b>>c; int p=-(a*3+c); if (count(m.begin(), m.end(), p)==0) m.push_back(p); f[p].push_back(name); } sort(m.begin(),m.end()); for (int i=0; i<m.size(); i++) { for (int j=0; j<f[m[i]].size(); j++) { cout<<f[m[i]][j]<<","<<-m[i]<<endl; } } } }