Submission #40429511
Source Code Expand
//ANMHLIJKTJIY!
#pragma GCC optimize(2)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline","fast-math","unroll-loops","no-stack-protector")
#pragma GCC diagnostic error "-fwhole-program"
#pragma GCC diagnostic error "-fcse-skip-blocks"
#pragma GCC diagnostic error "-funsafe-loop-optimizations"
#include <bits/stdc++.h>
#define INF 1000000000
#define LINF 1000000000000000000
#define MOD 1000000007
#define mod 998244353
#define F first
#define S second
#define ll long long
#define N 52
using namespace std;
struct Edge{
ll v,bkid,cap;
};
struct Flow{
vector<Edge> vt[N<<1];
ll n,m,s,t,dep[N<<1],cur[N<<1],lstfl[N][N];
void init(ll _n)
{
n=_n,m=0,s=_n-2,t=_n-1;
ll i;
memset(lstfl,0,sizeof(lstfl));
for(i=0;i<n;i++)
{
vt[i].clear();
}
return;
}
void addedge(ll x,ll y,ll w)
{
Edge cr;
cr.v=y,cr.bkid=vt[y].size(),cr.cap=w;
vt[x].push_back(cr);
cr.v=x,cr.bkid=vt[x].size()-1,cr.cap=0;
vt[y].push_back(cr);
return;
}
bool bfs()
{
ll i,x;
for(i=0;i<n;i++)
{
dep[i]=LINF;
}
queue<ll> q;
q.push(s);
dep[s]=0;
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0;i<vt[x].size();i++)
{
if(vt[x][i].cap!=0)
{
if(dep[vt[x][i].v]>dep[x]+1)
{
dep[vt[x][i].v]=dep[x]+1;
q.push(vt[x][i].v);
}
}
}
}
return (dep[t]<INF);
}
ll dfs(ll x,ll lft)
{
if(x==t||lft<=0)
{
return lft;
}
ll i,v,ret=0;
for(i=cur[x];i<vt[x].size();i++,cur[x]++)
{
if(vt[x][i].cap>0&&dep[vt[x][i].v]==dep[x]+1)
{
v=dfs(vt[x][i].v,min(lft,vt[x][i].cap));
ret+=v;
vt[x][i].cap-=v;
vt[vt[x][i].v][vt[x][i].bkid].cap+=v;
lft-=v;
if(lft<=0)
{
break;
}
}
}
return ret;
}
ll maxflow()
{
ll ret=0,i;
while(bfs())
{
for(i=0;i<n;i++)
{
cur[i]=0;
}
ret+=dfs(s,LINF);
}
return ret;
}
vector<ll> print(ll _n)
{
ll i,j;
vector<ll> ret;
for(i=0;i<_n;i++)
{
for(j=0;j<vt[i].size();j++)
{
if(vt[i][j].v==s)
{
continue;
}
if(vt[vt[i][j].v][vt[i][j].bkid].cap)
{
ret.push_back(vt[i][j].v-_n);
}
}
}
return ret;
}
}fl;
ll n,a[N],s[N][N],val[N][N],b[N],sum=0,ord[N];
bool cmp(ll x,ll y)
{
return b[x]<b[y];
}
bool check(ll v)
{
ll tot=sum+v*n*(n+1)/2,i,j;
if(tot%n!=0)
{
return false;
}
tot/=n;
for(i=0;i<n;i++)
{
if(a[i]>tot)
{
return false;
}
b[i]=tot-a[i];
}
for(i=0;i<n;i++)
{
s[i][0]=v;
}
ll lstid=0;
for(i=1;i<n;i++)
{
for(j=0;j<n;j++)
{
s[j][i]=s[j][i-1]-v/n;
}
ll lft=v%n;
while(lft--)
{
s[lstid][i]--;
lstid=(lstid+1)%n;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[i]-=s[i][j];
}
b[i]=-b[i];
ord[i]=i;
}
while(true)
{
sort(ord,ord+n,cmp);
if(b[ord[0]]==0&&b[ord[n-1]]==0)
{
return true;
}
ll x=ord[0],tks=0;
for(i=1;i<n&&b[x]<0;i++)
{
for(j=n-1;s[x][i]<s[x][i-1]&&j>=0;j--)
{
ll curval=min(s[x][i-1]-s[x][i],s[ord[j]][i]-(i==n-1?0:s[ord[j]][i+1]));
curval=min(curval,min(b[ord[j]],-b[x]));
if(curval>0)
{
tks+=curval;
b[x]+=curval;
b[ord[j]]-=curval;
s[x][i]+=curval;
s[ord[j]][i]-=curval;
}
}
}
if(!tks)
{
return false;
}
}
return true;
}
void print(ll v)
{
// cout<<"ok: "<<v<<endl;
ll i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
val[i][j]=s[i][j]-(j==n-1?0:s[i][j+1]);
}
}
puts("Yes");
printf("%lld\n",v);
while(v--)
{
fl.init(n+n+2);
for(i=0;i<n;i++)
{
fl.addedge(fl.s,i,1);
fl.addedge(i+n,fl.t,1);
for(j=0;j<n;j++)
{
fl.addedge(i,j+n,val[i][j]);
}
}
fl.maxflow();
vector<ll> ret=fl.print(n);
for(i=0;i<ret.size();i++)
{
printf("%lld ",ret[i]+1);
val[i][ret[i]]--;
}
puts("");
}
return;
}
int main(){
ll i;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
sum+=a[i];
}
for(i=0;i<=10000;i++)
{
if(check(i))
{
print(i);
return 0;
}
}
puts("No");
return 0;
}
Submission Info
Submission Time
2023-04-08 23:43:19+0900
Task
C - Permutation Addition
User
qiuzx_
Language
C++ (GCC 9.2.1)
Score
500
Code Size
4202 Byte
Status
AC
Exec Time
16 ms
Memory
3948 KiB
Compile Error
./Main.cpp:5:30: warning: ‘-fwhole-program’ is not an option that controls warnings [-Wpragmas]
5 | #pragma GCC diagnostic error "-fwhole-program"
| ^~~~~~~~~~~~~~~~~
./Main.cpp:6:30: warning: ‘-fcse-skip-blocks’ is not an option that controls warnings [-Wpragmas]
6 | #pragma GCC diagnostic error "-fcse-skip-blocks"
| ^~~~~~~~~~~~~~~~~~~
./Main.cpp:7:30: warning: ‘-funsafe-loop-optimizations’ is not an option that controls warnings [-Wpragmas]
7 | #pragma GCC diagnostic error "-funsafe-loop-optimizations"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./Main.cpp: In member function ‘bool Flow::bfs()’:
./Main.cpp:58:13: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<Edge>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
58 | for(i=0;i<vt[x].size();i++)
| ~^~~~~~~~~~~~~
./Main.cpp: In member function ‘long long int Flow::dfs(long long int, long long int)’:
./Main.cpp:79:17: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<Edge>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
79 | for(i=cur[x];i<vt[x].size();i++,cur[x]++)
| ~^~~~~~~~~~~~~
./Main.cpp: In member function ‘std::vector<long long int> Flow::print(long long int)’:
./Main.cpp:115:13: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<Edge>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
115 | for(j=0;j<vt[i].size();j++)
| ~^~~~~~~~~~~~~
./Main.cpp: In function ‘void print(long long int)’:
./Main.cpp:236:12: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
236 | for(i=0;i<ret.size();i++)
| ~^~~~~~~~~~...
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
500 / 500
Status
Set Name
Test Cases
Sample
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 02_min_00.txt, 02_min_01.txt, 02_min_02.txt, 02_min_03.txt, 02_min_04.txt, 02_min_05.txt, 02_min_06.txt, 02_min_07.txt, 02_min_08.txt, 02_min_09.txt, 02_min_10.txt, 02_min_11.txt, 02_min_12.txt, 02_min_13.txt, 02_min_14.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 03_max_04.txt, 03_max_05.txt, 03_max_06.txt, 03_max_07.txt, 03_max_08.txt, 03_max_09.txt, 03_max_10.txt, 03_max_11.txt, 03_max_12.txt, 03_max_13.txt, 03_max_14.txt, 04_same_00.txt, 04_same_01.txt, 04_same_02.txt, 04_same_03.txt, 04_same_04.txt
Case Name
Status
Exec Time
Memory
00_sample_00.txt
AC
11 ms
3620 KiB
00_sample_01.txt
AC
2 ms
3632 KiB
00_sample_02.txt
AC
2 ms
3656 KiB
01_rnd_00.txt
AC
2 ms
3568 KiB
01_rnd_01.txt
AC
2 ms
3524 KiB
01_rnd_02.txt
AC
2 ms
3632 KiB
01_rnd_03.txt
AC
2 ms
3508 KiB
01_rnd_04.txt
AC
5 ms
3640 KiB
01_rnd_05.txt
AC
3 ms
3588 KiB
02_min_00.txt
AC
2 ms
3660 KiB
02_min_01.txt
AC
2 ms
3688 KiB
02_min_02.txt
AC
2 ms
3692 KiB
02_min_03.txt
AC
2 ms
3640 KiB
02_min_04.txt
AC
4 ms
3576 KiB
02_min_05.txt
AC
2 ms
3504 KiB
02_min_06.txt
AC
2 ms
3528 KiB
02_min_07.txt
AC
2 ms
3672 KiB
02_min_08.txt
AC
2 ms
3596 KiB
02_min_09.txt
AC
2 ms
3676 KiB
02_min_10.txt
AC
2 ms
3580 KiB
02_min_11.txt
AC
2 ms
3588 KiB
02_min_12.txt
AC
2 ms
3528 KiB
02_min_13.txt
AC
2 ms
3588 KiB
02_min_14.txt
AC
2 ms
3628 KiB
03_max_00.txt
AC
7 ms
3896 KiB
03_max_01.txt
AC
2 ms
3584 KiB
03_max_02.txt
AC
8 ms
3896 KiB
03_max_03.txt
AC
7 ms
3900 KiB
03_max_04.txt
AC
9 ms
3928 KiB
03_max_05.txt
AC
6 ms
3900 KiB
03_max_06.txt
AC
2 ms
3580 KiB
03_max_07.txt
AC
2 ms
3588 KiB
03_max_08.txt
AC
7 ms
3928 KiB
03_max_09.txt
AC
7 ms
3864 KiB
03_max_10.txt
AC
6 ms
3948 KiB
03_max_11.txt
AC
7 ms
3808 KiB
03_max_12.txt
AC
16 ms
3884 KiB
03_max_13.txt
AC
5 ms
3884 KiB
03_max_14.txt
AC
5 ms
3884 KiB
04_same_00.txt
AC
2 ms
3708 KiB
04_same_01.txt
AC
1 ms
3588 KiB
04_same_02.txt
AC
2 ms
3720 KiB
04_same_03.txt
AC
2 ms
3640 KiB
04_same_04.txt
AC
2 ms
3744 KiB