結果
| 問題 |
No.655 E869120 and Good Triangles
|
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-07-27 21:13:36 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 1,180 ms / 2,500 ms |
| コード長 | 1,003 bytes |
| コンパイル時間 | 3,470 ms |
| コンパイル使用メモリ | 274,744 KB |
| 実行使用メモリ | 220,752 KB |
| 最終ジャッジ日時 | 2025-07-27 21:14:03 |
| 合計ジャッジ時間 | 24,922 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
int dx[]={0,1,0,-1,1,-1};
int dy[]={1,0,-1,0,-1,1};
int N,K,x,y,l,r,qx[8002009],qy[8002009],v[4009][4009],sx[4009][4009],sy[4009][4009];long long X;
int main(){
cin>>N>>K>>X;
for(int i=0;i<N;i++){
for(int j=0;j<N-i;j++){
v[i][j]=-1;
}
}
for(int i=0;i<K;i++){
cin>>x>>y;
x=x-y,y--;
if(v[x][y]==-1)v[x][y]=0,qx[r]=x,qy[r++]=y;
}
while(l!=r){
x=qx[l],y=qy[l++];
for(int i=0;i<6;i++){
int tx=x+dx[i],ty=y+dy[i];
if(0<=tx&&tx<N&&0<=ty&&ty<N&&0<=tx+ty&&tx+ty<N&&v[tx][ty]==-1){
v[tx][ty]=v[x][y]+1;
qx[r]=tx,qy[r++]=ty;
}
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N-i;j++){
sx[i][j+1]=sx[i][j]+v[i][j];
sy[i][j+1]=sy[i][j]+v[j][i];
}
}
long long ret=0;
for(int i=0;i<N;i++){
int cx=i+1;long long cs=0;
for(int j=0;j<=i;j++){
while(cx!=0){
int delta=sy[cx-1][i-cx+2]-sy[cx-1][j];
if(cs+delta>=X)break;
cs+=delta;
cx--;
}
ret+=cx;
cs-=sx[j][i-j+1]-sx[j][cx];
}
}
cout<<ret;
}
vjudge1