Submission #17424101
Source Code Expand
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef vector<int> vec;
int now,n,k,a[105],b[105],c[1005],pos[105];
bool check()
{
int mx=a[1],mn=a[1];
for(int i=2;i<=k;i++)mx=max(mx,a[i]),mn=min(mn,a[i]);
if(mx>=2*mn+1)return 0;
return 1;
}
vec get(int len)
{
for(int i=1;i<=k;i++)b[i]=a[i],pos[i]=0;
for(int i=now-k+len+1;i<=now;i++)pos[c[i]]=i;
for(int i=1;i<=k;i++)
if(!pos[i])
{
b[i]--;
if(b[i]<0)return vec(1,k+1);
}
int mn=b[1],mx=b[1];
for(int i=2;i<=k;i++)mn=min(b[i],mn),mx=max(b[i],mx);
if(mn*2+1<mx)return vec(1,k+1);
if(mn*2>=mx)
{
vec res;
for(int i=1;i<=k;i++)if(!pos[i])res.pb(i);
return res;
}
else
{
vec x(0),y(0),z(0);
for(int i=1;i<=k;i++)if((!pos[i])&&b[i]==mx)x.pb(i);
for(int i=1;i<=k;i++)if((!pos[i])&&b[i]==mn)x.pb(i);
for(int i=1;i<=k;i++)if((!pos[i])&&b[i]!=mx&&b[i]!=mn)y.pb(i);
int tmp=0;
for(int i=0;i<x.size();z.pb(x[i]),i++)
while(tmp<y.size()&&y[tmp]<x[i])z.pb(y[tmp++]);
while(tmp<y.size())z.pb(y[tmp++]);
int t1=0,t2=0;
for(int i=now-k+len+1;i<=now;i++)
{
if(b[c[i]]==mx&&(!t1))t1=i;
if(b[c[i]]==mn)t2=i;
}
for(int i=0;i<z.size();i++)
{
if(b[z[i]]==mx&&(!t1))t1=i+now+1;
if(b[z[i]]==mn)t2=i+now+1;
}
if(t1<t2)return z;
return vec(1,k+1);
}
}
void extend()
{
vec res(1,k+1);
for(int i=1;i<=min(n-now,k);i++)if(now-k+i+1>0)res=min(res,get(i));
for(auto i:res)printf("%d ",i),c[++now]=i,a[i]--;
}
int main()
{
scanf("%d",&k);
for(int i=1;i<=k;i++)scanf("%d",&a[i]),n+=a[i];
if(!check()){puts("-1");return 0;}
while(now<n)extend();
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - Permutation Cover |
| User |
AzusaCat |
| Language |
C++ (GCC 9.2.1) |
| Score |
1500 |
| Code Size |
1918 Byte |
| Status |
AC |
| Exec Time |
39 ms |
| Memory |
3796 KiB |
Compile Error
./Main.cpp: In function ‘vec get(int)’:
./Main.cpp:39:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
39 | for(int i=0;i<x.size();z.pb(x[i]),i++)
| ~^~~~~~~~~
./Main.cpp:40:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
40 | while(tmp<y.size()&&y[tmp]<x[i])z.pb(y[tmp++]);
| ~~~^~~~~~~~~
./Main.cpp:41:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
41 | while(tmp<y.size())z.pb(y[tmp++]);
| ~~~^~~~~~~~~
./Main.cpp:48:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
48 | for(int i=0;i<z.size();i++)
| ~^~~~~~~~~
./Main.cpp: In function ‘int main()’:
./Main.cpp:65:10: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
65 | scanf("%d",&k);
| ~~~~~^~~~~~~~~
./Main.cpp:66:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
66 | for(int i=1;i<=k;i++)scanf("%d",&a[i]),n+=a[i];
| ~~~~~^~~~~~~~~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1500 / 1500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
s1.txt, s2.txt, s3.txt |
| All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, s1.txt, s2.txt, s3.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01.txt |
AC |
11 ms |
3620 KiB |
| 02.txt |
AC |
9 ms |
3748 KiB |
| 03.txt |
AC |
30 ms |
3636 KiB |
| 04.txt |
AC |
34 ms |
3796 KiB |
| 05.txt |
AC |
2 ms |
3616 KiB |
| 06.txt |
AC |
3 ms |
3732 KiB |
| 07.txt |
AC |
8 ms |
3636 KiB |
| 08.txt |
AC |
24 ms |
3616 KiB |
| 09.txt |
AC |
27 ms |
3728 KiB |
| 10.txt |
AC |
2 ms |
3688 KiB |
| 11.txt |
AC |
5 ms |
3688 KiB |
| 12.txt |
AC |
11 ms |
3792 KiB |
| 13.txt |
AC |
33 ms |
3760 KiB |
| 14.txt |
AC |
38 ms |
3612 KiB |
| 15.txt |
AC |
4 ms |
3664 KiB |
| 16.txt |
AC |
5 ms |
3696 KiB |
| 17.txt |
AC |
3 ms |
3728 KiB |
| 18.txt |
AC |
24 ms |
3760 KiB |
| 19.txt |
AC |
39 ms |
3692 KiB |
| 20.txt |
AC |
2 ms |
3660 KiB |
| 21.txt |
AC |
4 ms |
3608 KiB |
| 22.txt |
AC |
4 ms |
3708 KiB |
| 23.txt |
AC |
19 ms |
3704 KiB |
| 24.txt |
AC |
28 ms |
3796 KiB |
| 25.txt |
AC |
2 ms |
3704 KiB |
| 26.txt |
AC |
4 ms |
3692 KiB |
| 27.txt |
AC |
2 ms |
3624 KiB |
| 28.txt |
AC |
3 ms |
3484 KiB |
| 29.txt |
AC |
33 ms |
3728 KiB |
| 30.txt |
AC |
2 ms |
3616 KiB |
| 31.txt |
AC |
7 ms |
3652 KiB |
| 32.txt |
AC |
8 ms |
3656 KiB |
| 33.txt |
AC |
28 ms |
3608 KiB |
| 34.txt |
AC |
2 ms |
3632 KiB |
| 35.txt |
AC |
2 ms |
3652 KiB |
| 36.txt |
AC |
35 ms |
3792 KiB |
| 37.txt |
AC |
25 ms |
3704 KiB |
| 38.txt |
AC |
2 ms |
3664 KiB |
| 39.txt |
AC |
2 ms |
3604 KiB |
| 40.txt |
AC |
2 ms |
3488 KiB |
| 41.txt |
AC |
3 ms |
3628 KiB |
| 42.txt |
AC |
2 ms |
3728 KiB |
| 43.txt |
AC |
1 ms |
3688 KiB |
| s1.txt |
AC |
2 ms |
3792 KiB |
| s2.txt |
AC |
2 ms |
3612 KiB |
| s3.txt |
AC |
2 ms |
3568 KiB |