結果
問題 | No.675 ドットちゃんたち |
ユーザー |
![]() |
提出日時 | 2018-04-13 22:45:58 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 287 ms / 2,000 ms |
コード長 | 1,248 bytes |
コンパイル時間 | 1,051 ms |
コンパイル使用メモリ | 85,868 KB |
最終ジャッジ日時 | 2025-01-05 10:05:26 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 8 |
ソースコード
#include<algorithm> #include<iostream> #include<vector> using namespace std; typedef long long lint; typedef vector<int>vi; typedef pair<int,int>pii; #define rep(i,n)for(int i=0;i<(int)(n);++i) typedef vector<lint> vl; vector<vl> mul(const vector<vl> &a,const vector<vl> &b){ int n=a.size(); vector<vl> ret(n,vl(n)); rep(i,n)rep(j,n)rep(k,n){ ret[i][j]=ret[i][j]+a[i][k]*b[k][j]; } return ret; } int main(){ int n; lint px,py; cin>>n>>px>>py; vector<vector<vl> > ops(n); rep(i,n){ int ty; cin>>ty; vector<vl> t(3,vl(3)); t[2][2]=1; if(ty==1){ lint v; cin>>v; t[0][2]=v; t[0][0]=t[1][1]=1; }else if(ty==2){ lint v; cin>>v; t[1][2]=v; t[0][0]=t[1][1]=1; }else{ t[1][0]=-1; t[0][1]=1; } ops[i]=t; } vector<vl> acc(3,vl(3)); vl init(3); init[0]=px; init[1]=py; init[2]=1; rep(i,3)acc[i][i]=1; vl ax(n),ay(n); for(int i=n-1;i>=0;--i){ acc=mul(acc,ops[i]); lint x=0,y=0; rep(j,3){ x+=acc[0][j]*init[j]; y+=acc[1][j]*init[j]; } ax[i]=x; ay[i]=y; if(0){ rep(a,3){ rep(b,3)cerr<<" "<<acc[a][b]; cerr<<endl; } } } rep(i,n)cout<<ax[i]<<" "<<ay[i]<<endl; }