提出 #34046642
ソースコード 拡げる
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef pair<ld,ld> state;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
const int DEBUG=0;
int a[222222];
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
for(int cc=1;;cc++)
{
int n;
if(DEBUG) n=100;
else cin>>n;
vi vec;
if(DEBUG)
{
for(int i=0;i<2*n;i++) vec.pb(i);
random_shuffle(vec.begin(),vec.end());
for(int i=0;i<2*n;i++) a[i]=vec[i];
}
else
{
for(int i=0;i<2*n;i++) cin>>a[i];
}
vi ans;
for(int i=1;i+1<2*n;i+=2) //a[i-1],a[i],a[i+1]
{
if(i%2==1) //max
{
if(a[i]==max(a[i],max(a[i-1],a[i+1]))) continue;
if(a[i-1]>a[i+1])
{
swap(a[i-1],a[i]); ans.pb(i-1);
}
else
{
swap(a[i+1],a[i]); ans.pb(i);
}
}
else //min
{
if(a[i]==min(a[i],min(a[i-1],a[i+1]))) continue;
if(a[i-1]<a[i+1])
{
swap(a[i-1],a[i]); ans.pb(i-1);
}
else
{
swap(a[i+1],a[i]); ans.pb(i);
}
}
}
for(int i=2;i+1<2*n;i+=2) //a[i-1],a[i],a[i+1]
{
if(i%2==1) //max
{
if(a[i]==max(a[i],max(a[i-1],a[i+1]))) continue;
if(a[i-1]>a[i+1])
{
swap(a[i-1],a[i]); ans.pb(i-1);
}
else
{
swap(a[i+1],a[i]); ans.pb(i);
}
}
else //min
{
if(a[i]==min(a[i],min(a[i-1],a[i+1]))) continue;
if(a[i-1]<a[i+1])
{
swap(a[i-1],a[i]); ans.pb(i-1);
}
else
{
swap(a[i+1],a[i]); ans.pb(i);
}
}
}
//check last 2
if(a[2*n-2]>a[2*n-1])
{
swap(a[2*n-2],a[2*n-1]); ans.pb(2*n-2);
}
for(int i=0;i+1<2*n;i++)
{
if(i%2==0) assert(a[i]<a[i+1]);
else assert(a[i]>a[i+1]);
}
assert(int(ans.size())<=n);
if(!DEBUG)
{
cout<<ans.size()<<'\n';
for(auto x:ans)
{
cout<<x+1<<' ';
}
cout<<'\n';
return 0;
}
cerr<<"Case #"<<cc<<" complete\n";
}
}
提出情報
| 提出日時 |
|
| 問題 |
A - Make it Zigzag |
| ユーザ |
zscoder |
| 言語 |
C++ (GCC 9.2.1) |
| 得点 |
400 |
| コード長 |
2326 Byte |
| 結果 |
AC |
| 実行時間 |
33 ms |
| メモリ |
4596 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
400 / 400 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00-sample-001.txt, 00-sample-002.txt |
| All |
00-sample-001.txt, 00-sample-002.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00-sample-001.txt |
AC |
13 ms |
3388 KiB |
| 00-sample-002.txt |
AC |
2 ms |
3588 KiB |
| 01-001.txt |
AC |
2 ms |
3492 KiB |
| 01-002.txt |
AC |
2 ms |
3556 KiB |
| 01-003.txt |
AC |
3 ms |
3492 KiB |
| 01-004.txt |
AC |
2 ms |
3556 KiB |
| 01-005.txt |
AC |
2 ms |
3404 KiB |
| 01-006.txt |
AC |
2 ms |
3504 KiB |
| 01-007.txt |
AC |
26 ms |
4276 KiB |
| 01-008.txt |
AC |
13 ms |
3880 KiB |
| 01-009.txt |
AC |
26 ms |
4220 KiB |
| 01-010.txt |
AC |
10 ms |
3644 KiB |
| 01-011.txt |
AC |
22 ms |
4236 KiB |
| 01-012.txt |
AC |
27 ms |
4308 KiB |
| 01-013.txt |
AC |
31 ms |
4396 KiB |
| 01-014.txt |
AC |
30 ms |
4596 KiB |
| 01-015.txt |
AC |
26 ms |
4444 KiB |
| 01-016.txt |
AC |
32 ms |
4528 KiB |
| 01-017.txt |
AC |
32 ms |
4588 KiB |
| 01-018.txt |
AC |
33 ms |
4576 KiB |
| 01-019.txt |
AC |
29 ms |
4592 KiB |
| 01-020.txt |
AC |
24 ms |
4216 KiB |
| 01-021.txt |
AC |
31 ms |
4440 KiB |