結果
| 問題 |
No.1623 三角形の制作
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-06-19 16:27:33 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 562 ms / 2,000 ms |
| コード長 | 929 bytes |
| コンパイル時間 | 852 ms |
| コンパイル使用メモリ | 75,528 KB |
| 最終ジャッジ日時 | 2025-02-14 22:57:22 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 19 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;cin>>n;
vector<long long> r(3001), g(3001), b(3001);
for(int i = 0; n > i; i++){
int x;cin>>x;r[x]++;
}
for(int i = 0; n > i; i++){
int x;cin>>x;g[x]++;
}
for(int i = 0; n > i; i++){
int x;cin>>x;b[x]++;
}
vector<vector<long long>> z(6002, vector<long long>(3002));
vector<vector<long long>> Z(6002, vector<long long>(3002));
for(int i = 1; 3000 >= i; i++){
for(int j = 0; 3000 >= j; j++){
z[i+j][max(i,j)] += g[i]*b[j];
}
}
for(int i = 0; 6001 >= i; i++){
for(int j = 1; 3001 >= j; j++){
Z[i][j] = Z[i][j-1]+z[i][j-1];
}
}
for(int i = 1; 6001 >= i; i++){
for(int j = 0; 3001 >= j; j++){
Z[i][j] = Z[i][j]+Z[i-1][j];
}
}
long long ans = 0;
for(int i = 1; 3000 >= i; i++){
ans += r[i]*(Z[6001][i+1]-Z[6001][0]-Z[i][i]+Z[i][0]);
}
cout << ans << endl;
}