結果
| 問題 |
No.3062 Rotate and Maximize
|
| コンテスト | |
| ユーザー |
pockyny
|
| 提出日時 | 2025-07-13 02:42:14 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,251 bytes |
| コンパイル時間 | 784 ms |
| コンパイル使用メモリ | 79,108 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-07-13 02:42:18 |
| 合計ジャッジ時間 | 4,319 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 35 WA * 16 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:11:11: warning: ‘j’ may be used uninitialized [-Wmaybe-uninitialized]
11 | int i,j,n; cin >> n;
| ^
ソースコード
#include <iostream>
#include <atcoder/modint>
#include <vector>
using namespace std;
using namespace atcoder;
using mint = modint998244353;
int a[3010],b[3010],mx[3010];
bool used[3010];
int main(){
int i,j,n; cin >> n;
for(i=0;i<n;i++) cin >> a[i];
for(i=0;i<n;i++){
if(a[i]==n){
j = i;
break;
}
}
for(i=0;i<n;i++) b[(j + i)%n] = a[i];
for(i=0;i<n;i++) a[i] = b[i];
vector<int> v;
for(i=0;i<n;i++){
if(a[i]==n) v.push_back(i);
}
for(i=0;i<n;i++){
int mn = n + 1;
for(int x:v) mn = min(mn,a[(i + x)%n]);
mx[i] = mn;
}
mint ans = 1;
for(i=n;i>=1;i--){
vector<int> cnt(n);
int c = 0;
for(j=0;j<n;j++){
if(a[j]==i){
c++;
for(int x:v) cnt[(j - x + n)%n]++;
}
}
int y = -1;
mint x = 0;
for(j=0;j<n;j++){
if(!used[j] && cnt[j]==c && mx[j]>=i){
x++;
if(y==-1) y = j;
}
}
if(y==-1){
ans = 0;
break;
}else{
ans *= x;
used[y] = true;
}
}
ans *= n;
cout << ans.val() << "\n";
}
pockyny