3*(2*M-1)*N
번(약 4,200,000,000)의 연산이 이루어지므로 시간초과를 받게된다.첫 번째 행은 tmp 배열에 저장된 값
(tmp[M-i-1])
을 가져온다.
그 이후 행들은 자신의 바로 위에 저장된 값(tmp[M+j-1])
을 가져온다.
3*(2*M-1)*N
번에서 (2*M-1)*N
번(약 1,4000,000)번으로 줄여 최적화를 적용하고 시간내에 문제를 해결할 수 있었다.#include <iostream>
#define FIO ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
using namespace std;
int M,N,tmp[1401],a,b,c;
int main(){
FIO;
cin>>M>>N;
for(int i=0;i<N;i++){
cin>>a>>b>>c;
for(int j=a;j<2*M-1;j++) tmp[j] += (j<a+b ? 1:2);
}
for(int y=0;y<M;y++){
for(int x=0;x<M;x++) cout<<(x==0 ? tmp[M-y-1] : tmp[M+x-1])+1<<" ";
cout<<"\n";
}
return 0;
}