ABC069
8位でした。わーい
ただ、簡単な問題だったので速度勝負だったのがなんとも
頭悪い自分は600点問題がDに出ると死んでしまうなさけない人だからねしょうがないね
A:-1して乗算するだけ
B:stringを使えばあら不思議な問題
C:これよくわからず全通り場合分け
2の倍数を2,4の倍数を4,残りを1と書き換える
1)141422...2244...44
2)1414...14141
3)22...2244...44
この3通りのいずれかに並べ替えることができない配列はNo
この時要素数c(1),c(2),c(4)に注目すると
1)はc(1)<=c(4),c(2)!=0
2)はc(2)=0,c(1)+1=c(4)
3)はc(1)=0
これをちゃんと分ければOK
でも縮約できそう&正しいのか疑問
D:ジグザグに数字を埋めていけばOK Testcaseで分かるレベルのバグを埋めてしまい手間取って順位が3つくらい落ちた模様
#include <iostream> #include <deque> #include <vector> #include <cstdio> #include <cstring> #include <utility> #include <algorithm> #include <string> #include <cmath> #include <queue> #include <cmath> #define i64 long long #define ui64 unsigned long long #define REP(i,n) for(int (i)=0;(i)<(n);i++) #define REP2(i,k,n) for(int (i)=(k);(i)<(n);i++) #define MDIST(a,b) abs(a-b) #define DIST(a,b) sqrt((a)*(a)+(b)*(b)) #define ATCODER 1000000007 using namespace std; //////////////////////// /* a */ int main(){ int a,b; cin >> a >> b; cout << (a-1)*(b-1) << endl; } /* b */ int main(){ string a; cin >> a; cout << a[0] << a.size()-2 << a[a.size()-1] << endl; } /* c */ int main(){ int n; cin >> n; int c1=0,c2=0,c4=0; int a; REP(i,n){ cin >> a; if(!(a%4))c4++; else if(!(a%2))c2++; else c1++; } // cout << n << " " << c2 << " " << c4 << endl; if(c1){ if(c2){ if(c1<=c4)cout << "Yes" << endl; else cout << "No" << endl; }else{ if(c1<=c4+1)cout << "Yes" << endl; else cout << "No" << endl; } }else cout << "Yes" << endl; } /* d */ int main(){ int H,W,N; cin >> H >> W >> N; int a[N]; REP(i,N){ cin >> a[i]; } int d[H][W]; int f=0; REP(i,H){ if(i%2){ for(int j=W-1;j+1;j--){ d[i][j]=f+1; if(a[f]>1)a[f]--; else f++; } }else{ for(int j=0;j<W;j++){ d[i][j]=f+1; if(a[f]>1)a[f]--; else f++; } } } for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ cout << d[i][j] << " "; }cout << endl; } }