https://codeforces.com/contest/1276/submission/68495856
#include
using namespace std;
const int N=4e5+5;
typedef pair<int,int>pii;
int n,a,i,j,p,q,np,nq,ct[N],su[N],x,y,z,w;
unordered_map<int,int>mp;
vector<int>ans[999],ve[N];
int main(){
scanf("%d",&n);
for(i=1;i<=n;++i)scanf("%d",&a),++mp[a];
for(auto u:mp)++ct[u.second],ve[u.second].push_back(u.first);
for(i=1;i<=n;++i){
su[i]=su[i-1]+ct[i]*i,ct[i]+=ct[i-1];
np=i;nq=su[i]/i+mp.size()-ct[i];
if(np<=nq && np*nq>p*q)p=np,q=nq;
}
for(i=0;i<p;++i)ans[i].resize(q);
for(j=N-1;j>=0;--j)for(int v:ve[j])for(i=min(p,j);w<q && i--;){
ans[x][y]=v;
x=(x+1)%p;y=(y+1)%q;if(++z==p)z=0,++w,x=0,y=w;
}
printf("%d\n%d %d\n",p*q,p,q);
for(i=0;i<p;++i)for(j=0;j<q;++j)printf("%d%c",ans[i][j],j==q-1?'\n':' ');
return 0;
}
콘테스트 끝나고 올린 풀이라서 시스텟 통과한거겠지?
저격 데이터를 직접 만들어내서 틀리게 만드는 거라 시스텟에는 아마 저격 데이터가 없을 거기 때문에 통과함
그럼 콘테스트에서 저런 풀이 내면 대부분 해킹당함?
사실 저격데이터 잘 만드는 능력자가 룸에 있을 확률이 높지 않음
그렇구만 콘테스트 때는 운빨을 좀 노려봐야겠네
시스텟 할때 핵할때 쓴 저격 데이터까지 다 모아서 채점한다고 들은 것 같은디?? 그냥 맞은 코드 아녀?
콘테스트 끝나고 올라간 코드임. 저격은 콘테스트 중에 할 수 있는거고, 이런 코드를 콘테스트때 낸사람이 없었거나 비슷한 코드가 있었어도 위에 말대로 저격을 못했거나 둘중 하나겠지
unordered_map 써도 핵 막는 코드도 있음
그건 어떻게함?
해싱을 랜덤으로하나?
https://codeforces.com/blog/entry/62393
대충 맞음. 해싱에 랜덤을 잘 넣으면 핵 안된다 카더라
난 어차피 unordered_map 안써서 자세한건 잘 모름
ㄱㅅㄱㅅ