Commit 50e224d3 authored by Ashutosh Kumar Verma's avatar Ashutosh Kumar Verma

first

parents
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn=1e7+2;
const ll inf=1e17;
int n;
list<int>adj[maxn];
ll va[maxn],cap[maxn];
int dep[maxn];
void df0(int x,int p=-1)
{
if(x!=1)
{
dep[x]=1+dep[p];
}
for(int v:adj[x])
{
df0(v,x);
}
}
void df1(int x)
{
for(int v:adj[x])
{
df1(v);
}
if(adj[x].size()<2)return;
for(int v:adj[x])
{
if(v==mxc)continue;
ll mi=
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
for(int i=2;i<=n;++i)
{
cin>>va[i]>>cap[i];
}
cap[1]=inf;
for(int i=2;i<=n;++i)
{
int x;
cin>>x;
adj[x].pb(i);
}
df0(1);
}
File added
File added
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin>>n;
cout<<n<<'\n';
for(int i=0;i<n-1;++i)
{
cout<<"1 1000000000\n";
}
for(int i=2;i<=n;)
{
cout<<i-1<<'\n';
i++;
if(i<=n)
cout<<i-2<<'\n';
i++;
}
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
// #define MAX 100005
#define MAX 10000005
#define MOD 1000000007
typedef vector<int> vi;
typedef pair<int, int> ip;
// Program assumes that maximum value of n is 10^7
vector<int> children[MAX],vd[MAX];
int depth[MAX],parent[MAX],temp[MAX],vis[MAX];
int max_depth = 0;
bool dead[MAX];
ll have[MAX],cap[MAX];
queue<int> q;
// int total = 0;
// DFS to calculate depths
void initdfs(int u){
max_depth = max(max_depth, depth[u]);
vd[depth[u]].pb(u);
for(int v: children[u]){
depth[v] = 1+depth[u];
initdfs(v);
}
}
/*
For each depth, calculate contribution of vertices at that depth to the root.
Meanwhile, also reduce the graph made by above vertices by compressing straight-line paths.
*/
void compute(int d){
for(int u: vd[d])
q.push(u);
int cnt = 0;
while(!q.empty()){
int u = q.front();
q.pop();
if(u == 1)
continue;
if((have[u] <= cap[u]) && !dead[parent[u]]){
have[parent[u]] += have[u];
++vis[parent[u]];
if(vis[parent[u]] == 1){
q.push(parent[u]);
temp[cnt++] = parent[u];
}
}
else
dead[u] = 1;
have[u] = 0;
}
// total += cnt;
for(int u: vd[d]){
while(parent[u]!=1 && vis[parent[u]]==1){
cap[u] = min(cap[u],cap[parent[u]]);
dead[u] |= dead[parent[u]];
parent[u] = parent[parent[u]];
}
}
for(int i=0;i<cnt;i++)
vis[temp[i]] = 0;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;
cin>>n;
for(int i=2;i<=n;i++)
cin>>have[i]>>cap[i];
for(int i=2;i<=n;i++){
cin>>parent[i];
children[parent[i]].pb(i);
}
memset(vis,0,sizeof(vis));
memset(dead,0,sizeof(dead));
have[1] = 0;
cap[1] = 1000000000000000000LL;
depth[1] = 0;
vis[1] = 1;
initdfs(1);
for(int d=1;d<=max_depth;d++)
compute(d);
// verify number of steps (should give WA if greater)
// if(total > 3*n){
// cout<<"-1\n";
// return 0;
// }
cout<<have[1]<<"\n";
}
//By Tushar Gautam
#pragma GCC optimize ("-Ofast")
#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define memreset(a) memset(a,0,sizeof(a))
#define testcase(t) int t;cin>>t;while(t--)
#define forstl(i,v) for(auto &i: v)
#define forn(i,e) for(int i = 0; i < e; i++)
#define forsn(i,s,e) for(int i = s; i < e; i++)
#define rforn(i,s) for(int i = s; i >= 0; i--)
#define rforsn(i,s,e) for(int i = s; i >= e; i--)
#define leadzero(a) __builtin_clz(a) // count leading zeroes
#define trailzero(a) __builtin_ctz(a) // count trailing zeroes
#define bitcount(a) __builtin_popcount(a) // count set bits (add ll)
#define ln "\n"
#define dbgarr(v,s,e) cerr<<#v<<" = "; forsn(i,s,e) cerr<<v[i]<<", "; cerr<<endl
#define inputfile freopen("input.txt", "r", stdin)
#define outputfile freopen("output.txt", "w", stdout)
#define dbg(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); \
stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }
void err(istream_iterator<string> it) { cerr<<endl; }
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
cerr << *it << " = " << a << "\t"; err(++it, args...);
}
template<typename T1,typename T2>
ostream& operator <<(ostream& c,pair<T1,T2> &v){
c<<"("<<v.fi<<","<<v.se<<")"; return c;
}
template <template <class...> class TT, class ...T>
ostream& operator<<(ostream& out,TT<T...>& c){
out<<"{ ";
forstl(x,c) out<<x<<" ";
out<<"}"; return out;
}
typedef long long int ll;
typedef long double ld;
typedef pair<ll,ll> p64;
typedef pair<int,int> p32;
typedef pair<int,p32> p96;
typedef vector<ll> v64;
typedef vector<int> v32;
typedef vector<v32> vv32;
typedef vector<v64> vv64;
typedef vector<p32> vp32;
typedef vector<vp32> vvp32;
typedef map<int,int> m32;
const int LIM = 1e5+5, MOD = 1e9+7;
int t,n,m,k,x,y;
v64 v,c,best,totval,neig,blkin;
vv32 g;
int updsz(int i){
int curr=0;
forstl(it,g[i]){
auto l=1+updsz(it);
if(l>curr) best[i]=it,curr=l;
}
return curr;
}
void getneig(int i){
forstl(it,g[i]) if(it!=best[i]) neig[it]=best[i];
if(best[i]){
if(neig[i]) neig[best[i]]=best[neig[i]];
else neig[best[i]]=0;
}
forstl(it,g[i]) getneig(it);
}
ll fans=0,gin=0;
void mainreduce(int i,ll cmin1,ll cmin){
// dbg("mainreduce",i,cmin);
// dbg(totval); dbg(c); dbg(blkin);
cmin=min(cmin,c[i]);
if(totval[i]>cmin) totval[i]=0,cmin=0;
if(neig[i]!=0){
//dbg(neig[i],totval[i],cmin1, gin);
if(c[neig[i]]<totval[neig[i]] && blkin[neig[i]]!=gin){
totval[neig[i]]=0; //dbg(2);
if(best[neig[i]]) c[best[neig[i]]]=0,blkin[best[neig[i]]]=blkin[neig[i]];
c[neig[i]]=cmin1;
}
totval[neig[i]]+=totval[i];
if(totval[neig[i]]>cmin1){
c[neig[i]]=0; blkin[neig[i]]=gin; //dbg(1);
}else{
if(best[neig[i]]) c[best[neig[i]]]=min(c[best[neig[i]]],c[neig[i]]);
c[neig[i]]=cmin1; blkin[neig[i]]=gin;
}
}
if(best[i]) mainreduce(best[i],cmin1,cmin);
}
void reduce(int i,ll cmin){
//dbg("reduce",i,cmin);
//dbg(totval); dbg(c); dbg(blkin);
if(cmin==0 || v[i]>c[i]) c[i]=0,cmin=0,blkin[i]=-1;
else totval[i]=v[i],cmin=c[i];
c[i]=min(c[i],cmin);
forstl(it,g[i]) reduce(it,cmin);
if(g[i].size()>1){
gin=i;
forstl(it,g[i]) if(it!=best[i]) mainreduce(it,c[i],1e17);
}
}
void solve(int i,ll cmin){
// dbg(i,cmin);
if(cmin<totval[i]) totval[i]=0,cmin=0;
if(best[i]) solve(best[i],min(c[best[i]],cmin));
if(neig[i]==0) fans+=totval[i];
}
int main(){
fastio;
cin>>n;
v.resize(n); c.resize(n); c[0]=1e17; v[0]=0;
forsn(i,1,n) cin>>x>>y,v[i]=x,c[i]=y;
g.assign(n,v32(0)); best.assign(n,0); neig.assign(n,0);
forsn(i,1,n) cin>>x,--x,g[x].pb(i);
updsz(0); //dbg(best);
getneig(0); //dbg(neig);
totval.assign(n,0);blkin.assign(n,-2);
reduce(0,c[0]); solve(0,c[0]);
cout<<fans<<ln;
return 0;
}
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn = 1e5+3;
int T[4*maxn];
int a[maxn];
void init(int v, int tl, int tr)
{
if(tl == tr)
{
T[v] = a[tl];
return;
}
int tm = (tl + tr)/2;
init(2*v, tl, tm);
init(2*v+1, tm+1, tr);
T[v] = T[2*v];
if(T[2*v+1] < T[v])
{
T[v] = T[2*v+1];
}
}
void update(int v, int tl, int tr, int ind)
{
if(ind<tl||ind>tr)return;
if(tl == tr && tr == ind)
{
T[v] = a[ind];
return;
}
int tm = (tl+tr)/2;
if(ind<=tm)update(2*v,tl,tm,ind);
else update(2*v+1,tm+1, tr, ind);
T[v] = T[2*v];
if(T[2*v+1] < T[v])
{
T[v] = T[2*v+1];
}
}
int query(int v,int tl, int tr, int l, int r, int x)
{
//cout<<v<<' '<<tl<<' '<<tr<<' '<<l<<' '<<r<<' '<<x<<" v tl tr l r x\n";
if(T[v]>x)return -1;
if(tl == tr && tr == l && l == r)
{
if(T[v] <= x)
{
return tl;
}
else return -1;
}
int tm = (tl+tr)/2;
int ans1 = -1, ans2 = -1;
if(l>= tm+1)
{
return ans2 = query(2*v+1, tm+1, tr, l, r, x);
}
if(r<=tm)
{
return ans1 = query(2*v, tl, tm, l, r, x);
}
if(T[2*v+1]<=x)
return ans2 = query(2*v+1, tm+1, tr, tm+1, r, x);
else
return ans1 = query(2*v, tl, tm, l, tm, x);
}
void pr(int n)
{
for(int i=0;i<n;++i)
{
cout<<a[i]<<' ';
}
cout<<'\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,m;
cin>>n>>m;
for(int i=0;i<n;++i)cin>>a[i];
init(1,0,n-1);
while(m--)
{
char ch;
int i,x;
cin>>ch;
if(ch == 'A')
{
cin>>i>>x;
a[i] = x;
update(1, 0, n-1, i);
}
else if(ch == 'I')
{
cin>>i>>x;
cout<<query(1,0,n-1,0,i,x)<<'\n';
}
else
{
cin>>x;
cout<<"0\n";
}
}
}
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
import random
from datetime import datetime
dt = datetime.now()
see = dt.microsecond
n = 100000
m = 100000
MAX = 10**9
p = 0.1
random.seed(see)
print(n,m)
a = [0 for _ in range(n)]
for i in range(n):
a[i] = random.randint(0,MAX)
print(a[i])
for i in range(m):
idx = random.randint(0,n-1)
x = random.randint(0,MAX)
if random.random() < p:
print("A",idx,x)
else:
print("I",idx,x)
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn=1e6+2;
ll sho[maxn][21];
list<pii> adj[maxn];
int n,m,k,s,t;
struct node
{
ll len;
int ve,sk;
node()
{}
node(ll a,int b,int c):
len(a),ve(b),sk(c)
{}
bool operator<(const node & ob)const
{
return len>ob.len;
}
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m>>k>>s>>t;
for(int i=0;i<m;++i)
{
int x,y,z;
cin>>x>>y>>z;
adj[x].pb(mp(y,z));
}
if(s==t)
{
cout<<"0\n";
return 0;
}
for(int i=1;i<=n;++i)
{
for(int j=0;j<21;++j)
sho[i][j]=1e17;
}
for(int i=0;i<=20;++i)
{
sho[s][i]=0;
}
priority_queue<node>qq;
qq.push(node(0,s,0));
while(!qq.empty())
{
auto xx=qq.top();
qq.pop();
if(xx.len!=sho[xx.ve][xx.sk])
{
continue;
}
int v=xx.ve;
for(auto ed:adj[v])
{
ll te1=sho[v][xx.sk]+ed.ss;
if(te1<sho[ed.ff][xx.sk])
{
sho[ed.ff][xx.sk]=te1;
qq.push(node(te1,ed.ff,xx.sk));
}
ll te2=sho[v][xx.sk];
if(xx.sk<20&&te2<sho[ed.ff][xx.sk+1])
{
sho[ed.ff][xx.sk+1]=te2;
qq.push(node(te2,ed.ff,xx.sk+1));
}
}
}
ll ans=sho[t][0];
for(int i=1;i<=k;++i)
{
if(sho[t][i]<ans)
{
ans=sho[t][i];
}
}
cout<<ans<<'\n';
}
File added
4 4 1 1 4
1 2 1
1 3 2
2 4 4
3 4 2
4 3 1 1 4
1 2 1
2 3 1
3 4 1
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn = 100+3;
int n;
pll re[maxn];
ll grundy[maxn];
list<pair<ll,pll> > ans;
ll grnd(ll x, ll y)
{
assert(x>=y);
if(y==0)
{
return x;
}
if(y==1)
{
if(x%2==1)
{
return x+1;
}
return x-1;
}
if(y==2)
{
x-=y;
if(x%2==0)
{
x/=2;
return 2*x+3;
}
x/=2;
if(x==0||x==1)
{
return 3*x+1;
}
return 2*x+2;
}
else
{
x-=y;
if(x%2==0)
{
ll init = y*2 -(y/2);
return init + x;
}
x/=2;
ll terms=(y+2)/2;
if(x<terms)
{
return 3*x+1;
}
ll lastterm=(terms-1)*3+1;
ll xleft = x -terms;
return lastterm + (xleft+1)*2;
}
}
void ne(int i, ll x, ll y)
{
ans.pb(mp(i,mp(x,y)));
}
void calc(int i, ll x, ll y, ll newgr)
{
ll posonxy= (newgr*2)/3;
if(posonxy<= y && posonxy<x && grnd(posonxy,posonxy)==newgr)
{
ne(i,posonxy,posonxy);
}
if(x>y)
{
ll in1=y+1,in2=y+2;
ll hi = x-1;
if(in1%2!=hi%2)hi--;
while(in1<=hi)
{
ll m=(in1+hi)/2;
if(m%2!=in1%2)m--;
ll val = grnd(m,y);
if(val==newgr)
{
ne(i,m,y);
break;
}
if(val<newgr)
{
in1=m+2;
}
else
{
hi = m - 2;
}
}
hi = x-1;
if(in2%2!=hi%2)hi--;
while(in2<=hi)
{
ll m=(in2+hi)/2;
if(m%2!=in2%2)m--;
ll val = grnd(m,y);
if(val==newgr)
{
ne(i,m,y);
break;
}
if(val<newgr)
{
in2 = m+2;
}
else
{
hi = m-2;
}
}
}
ll hi1 = y-1,hi2=y-2;
if(hi1<0)return;
if(hi1%2!=(x-1)%2)
{
swap(hi1,hi2);
}
ll lo=0;
if(lo%2!=hi1%2)lo++;
while(lo<=hi1)
{
ll m=(lo+hi1)/2;
if(m%2!=lo%2)m--;
ll val = grnd(x,m);
if(val == newgr)
{
ne(i,x,m);
break;
}
if(val>newgr)
{
lo = m+2;
}
else
{
hi1 = m-2;
}
}
lo = 0;
if(hi2<0)return;
if(lo%2!=hi2%2)lo++;
while(lo<=hi2)
{
ll m=(lo+hi2)/2;
if(m%2!=lo%2)m--;
ll val =grnd(x,m);
if(val == newgr)
{
ne(i,x,m);
break;
}
if(val>newgr)
{
hi2 = m-2;
}
else
{
lo = m+2;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
/*
int i;ll x,y,newg;
cin>>i>>x>>y>>newg;
calc(i,x,y, newg);
for(auto &f:ans)
{
cout<<f.ff<<' '<<f.ss.ff<<' '<<f.ss.ss<<'\n';
}
return 0;
*/
/*
int m;
cin>>m;
for(int j=m-1;j>=0;--j)
{
for(int i=0;i<m;++i)
{
if(i>=j)
{
if(grnd(i,j)<10)
{
cout<<' '<<grnd(i,j)<<' ';
}
else
{
cout<<grnd(i,j)<<' ';
}
}
else cout<<" ";
}
cout<<'\n';
}
return 0;
*/
cin>>n;
ll gxor=0;
for(int i=0;i<n;++i)
{
ll x,y;
cin>>x>>y;
re[i].ff=x;
re[i].ss=y;
grundy[i]=grnd(x,y);
gxor = gxor^grundy[i];
}
if(gxor==0)
{
cout<<"0\n";
return 0;
}
for(int i=0;i<n;++i)
{
ll newgr=gxor^grundy[i];
calc(i,re[i].ff,re[i].ss,newgr);
}
cout<<ans.size()<<'\n';
for(auto &x:ans)
{
ll a=x.ss.ff, b=x.ss.ss;
assert(a>=b);
cout<<x.ff<<' '<<a<<' '<<b<<'\n';
}
}
100
1692768257 492739943
783279169 498237273
1848774861 835107658
2127360904 418200384
1920723587 1099474625
627145005 576359559
1723860143 1215541724
1655046433 597821357
152593708 9719840
1792900106 546975838
1929030485 654742636
553276024 305943858
922570488 810260476
1788572634 854014505
450449330 64168932
1157002294 822033635
1351474472 273131673
1672532114 296916585
1876844808 1833784415
1890880920 1572614134
1844506509 1694452318
879465759 51069212
1474270931 405218231
1763141196 832163780
2134719866 227497433
1028464771 311531494
1412391545 344688272
1927946524 1763962932
948789114 913251289
1232560023 1009047599
652045968 384636034
855535484 327533535
1581862923 522597001
1292338558 79679577
969479257 684538548
1079442610 250096414
744932919 257907623
1031420115 589874221
1231517795 672190779
1746439433 601063235
1000890899 306715157
733932542 58165026
1862576468 474532597
1821561896 453575357
1644354470 463914440
1948043427 698524047
1276493342 230195427
1688261988 661965464
2065288152 1519784203
1111418903 842602403
804741115 431910999
1037589552 633433333
1439971050 1200386824
1948181368 1600219307
401086167 104040836
953495417 562641994
874499605 336781167
1708225080 1661663924
1447153164 430042817
2050925073 637683914
1610144068 1249915029
636857449 604648695
2027121358 437999261
1565711969 604251
1803936292 583131298
1719844225 292000955
1624339922 659917290
1468948390 1143584818
1103431483 251395476
1851642936 1377296675
529220049 498985712
1871581316 1474200403
1367337782 623595527
1049824929 681937951
1557833776 210918418
407499401 391649008
1883783706 517082324
401339021 58790720
584425233 253153420
1992173300 1039112723
1030518057 461370944
1845490138 1046435745
1701980932 711346084
1060133086 552170939
2132440890 579453447
1611285775 35744584
1954311973 1111231755
580093799 358949346
506862966 60722413
1925725560 943442983
1574449480 478912026
1321137358 305712026
1942670347 1522149573
1150401083 119153041
2008590856 995728040
2091069599 1036867238
1945357308 181749981
1064727739 950184633
2045362569 1637959654
462820324 0
35
1692835485 1622640939
831428520 143044611
1582136302 1116576084
1516313475 822310560
1359739835 492135376
1773919118 743144925
1512513892 271863523
1910169151 1057053305
1479881854 218720624
1693007551 219586907
1220240403 111624371
1855881545 1317579566
1748637787 1041576914
1643986901 963242805
1490092549 31179729
1261782657 51695435
1759191540 380102074
197075352 177360884
1931910463 825657390
1813892648 415882124
1819070730 1544560418
644620390 79895615
1029585211 628321930
1962897398 772782972
1828759214 182313348
1170153834 120248812
1626339674 239671457
1046765245 719041902
797436491 69663310
1529291211 452663555
1713095981 690897338
1448523933 467480437
1467119539 470857119
2071728190 218359838
2345210196 0
5
1692936327 1170008786
1977394370 1757739265
1538778723 108436640
1673484155 1428475824
1895304845 0
100
1696717902 302430401
2001440805 31763027
1265250333 679274137
1124933714 537353107
1175182862 314903010
891260175 711323400
1482787418 170920951
1807894538 537378763
1890066376 1556134106
1165675574 767475008
1495670184 16060637
1707340707 1432694353
598771335 441457503
1081956326 20252536
2125034947 1695931933
1407268591 661820972
1725804526 1682532100
1962535050 252341004
1353855657 1125251077
1662787234 1260343427
1960767228 1478237781
504073124 134007653
1703761915 579556307
1764512604 1561654005
1422959334 173728401
1299633546 884833985
560071330 80530420
2041400849 698018509
1625324671 839755657
1508588746 510799115
1860822132 1659117540
1033221263 796997599
1283140054 704104404
1984322851 1247823058
1680366513 93118847
837228719 362542294
1862290220 990225089
2085056162 900762988
1511311613 177702975
1651631495 596915343
1990587226 1460054664
1748225594 151770769
1739532537 556300104
687303199 480979101
1245932277 190328380
1917184748 270737642
1279420048 458989325
1270934245 472325251
1719502653 993651292
1464425572 290510337
1376904328 347260624
1696238669 837895958
1467092727 20227835
1449175487 666806619
1680369382 410761577
1657383181 628737830
1577165570 1031080069
1449043004 1317172040
1601211248 1439864579
2034421324 1958244857
284564934 236763869
1375416816 3148392
1613954789 1116450204
872193466 232208640
1918417490 752825881
794063739 523278372
1874221622 1365878915
1391520876 752666758
1194447102 395311158
1827712335 755127657
1949661076 1648218406
1215186989 1078241153
1532045085 752816065
1753439978 147622465
1130310781 747156970
492954905 101178209
1842593886 1761252262
1944822016 452177186
1922515572 680265842
442443050 25069866
1551955436 378636390
747760669 539261639
989376333 482150010
1865316075 1039417939
1489048825 1400993619
1884804789 1816663284
382811826 57353170
1862054334 268003807
2118982274 1066776490
2013760917 937455299
1871175901 1102841439
1199770330 524708016
1815974627 1047964825
1631424728 284198600
522239272 509779215
1546998622 821325725
2144060806 454369782
264940706 141077342
1124845511 979958836
1629492965 1116067809
87
1714806646 1696801937
1524756582 661514023
882846850 543344042
1971737163 1042490827
1166341684 473953172
1993546931 714115081
1854002628 503408823
1930023984 234450826
1972725021 172611153
1883388634 589401914
279901441 203814858
1314331957 960408257
1804344874 1094484547
1660906775 1007718031
1867723719 1064077034
1846381869 1001373133
248904792 44694788
1713509113 1191955921
1475705031 885816814
1566551894 888170238
1290872906 318359769
1821129148 1780653392
1360015032 109454752
2104187803 323706225
1813923825 954445724
1719472456 939873963
1364377403 486130313
1681774652 260629555
1888332049 406814350
1683412177 11409614
835644521 635337915
2075104072 134413067
1713171375 1139710824
1958044296 811076244
1679725399 324757531
1443876490 666956330
1817884617 936912050
1592744764 1330724546
877588693 715475655
1238394032 276989100
1758740651 1189204049
550523511 322148914
2056752571 1289098101
2033904278 1943678685
184507400 49485532
911323069 627164935
1675256441 753450279
1764657487 376908070
1849218939 1439368389
455808763 61230468
1076517815 703710892
605191451 485190730
1863357331 970164765
1804087472 692637916
1468183803 976529911
1178072991 73534397
2005366356 1089513354
1900439906 1583989274
1576782927 1169218311
1287389737 1042450109
1261566234 1037648007
1528889562 35356362
1405032179 645650041
660747643 205370796
1033005006 547697264
1457333494 1353039623
832605678 600186294
1259722687 600353299
1979434718 117924636
1690129749 1244492574
1843453085 1169424326
744309738 521522791
1352784930 846947721
1918208566 1128734531
2080728517 1306859998
1830924111 1180477471
1758645210 1048355714
1732610809 111613543
1230598701 1135593370
475439092 257363450
2065652404 1199316626
633022440 574161842
1573860892 1294052523
1323931745 1242771648
1599784201 837137214
1077805767 656963524
1798946860 1372518641
45
1696902779 1262174493
523238785 128725030
1556630835 965546681
2128907843 1648656091
1779961191 1329074634
1360534427 96241333
472897540 151977233
923298748 165224414
2071915395 230370527
1234707660 597160659
1288113382 538965867
313303623 64089317
1259843672 3835884
1496653855 45192978
1508914456 785383674
690874569 84801854
1483102217 656270390
1126254425 460433738
2042157120 1037256317
1451069486 1300555870
1353947924 1066035056
750151173 395119271
2061756721 149081855
1652804583 985652536
994591026 173319594
1432548433 78665734
1402346914 611557773
1679719945 594756269
569643343 233092153
791775032 513567475
1554286012 893921576
1890844922 344333420
1635561552 967595748
1980160692 1092322864
1275007129 1006672885
1452987337 1321622922
1973941893 1093089133
1714016795 1134632707
1360802871 117121189
1611064526 313012347
1687667106 657040966
831267929 526602688
1738958968 1578423153
692441080 643348467
761233085 177522224
5
1696970007 244591842
1921016015 571388136
1289992276 1247015107
2052766267 1517860414
1218977439 721735385
26
8 565025544 565025544
11 1190752235 1190752235
11 157575291 1707340707
14 2125034947 1283867758
16 1725804526 618385669
30 505312025 505312025
37 2085056162 508603481
40 493046929 493046929
69 419532723 1827712335
70 1949661076 883399053
76 1842593886 854763083
77 250901368 1944822016
78 344805912 1922515572
83 166952089 1865316075
84 673917402 673917402
84 1065406761 1489048825
88 559750782 559750782
88 2118982274 879459855
89 592607390 592607390
89 2013760917 471877494
90 595007584 595007584
90 1871175901 172306298
92 634569055 634569055
92 175465075 1815974627
99 673266345 673266345
99 780612139 1629492965
21
3 1302711336 1042490827
5 88418646 88418646
9 612082627 589401914
13 1039335208 1007718031
15 1093011692 1001373133
17 1308867596 1191955921
21 191749194 191749194
23 53350217 53350217
33 981185071 811076244
37 58890607 58890607
40 1363320304 1189204049
42 194828612 194828612
48 1739010824 1439368389
52 91499877 91499877
53 44412525 44412525
56 225611543 225611543
57 399129059 399129059
58 1202779128 1169218311
75 109142007 109142007
76 131640171 131640171
80 1524089367 1199316626
18
2 330774233 330774233
5 339439688 96241333
13 337533700 45192978
14 290527194 290527194
16 72530595 72530595
18 1344277586 1037256317
19 357465282 357465282
20 1353947924 785456431
24 15944884 15944884
25 256478802 78665734
26 22178368 22178368
27 310103849 310103849
30 602752391 602752391
31 1117752161 344333420
32 681996603 681996603
34 484624479 484624479
39 224820999 224820999
40 327328330 327328330
3
0 216318115 216318115
1 536421381 536421381
4 93109621 93109621
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
using namespace std;
// long int grundy(long int x,long int y){
// long int a = y/2;
// if((x-y)%2==0) return 3*a+2*(y%2)+x-y;
// else{
// long int k = (x-y-1)/2;
// if(k==0) return 1;
// else if(k<=a) return 1+3*k;
// else return 1+3*a+2*(k-a);
// }
// }
int main(){
srand(time(0));
int n;
scanf("%d",&n);
printf("%d\n",n);
long int c,d;
// long int g;
for(int i=0;i<n;i++){ // make i<n-1 and uncomment every other comment leaving this one for testcases which should give output 0.
c = rand();d = rand();
printf("%ld %ld\n", max(c,d), min(c,d));
// if(i==0)g = grundy(max(c,d), min(c,d));
// else g = g^grundy(max(c,d), min(c,d));
}
// printf("%ld %d\n", g, 0);
}
\ No newline at end of file
File added
100
1692768257 492739943
783279169 498237273
1848774861 835107658
2127360904 418200384
1920723587 1099474625
627145005 576359559
1723860143 1215541724
1655046433 597821357
152593708 9719840
1792900106 546975838
1929030485 654742636
553276024 305943858
922570488 810260476
1788572634 854014505
450449330 64168932
1157002294 822033635
1351474472 273131673
1672532114 296916585
1876844808 1833784415
1890880920 1572614134
1844506509 1694452318
879465759 51069212
1474270931 405218231
1763141196 832163780
2134719866 227497433
1028464771 311531494
1412391545 344688272
1927946524 1763962932
948789114 913251289
1232560023 1009047599
652045968 384636034
855535484 327533535
1581862923 522597001
1292338558 79679577
969479257 684538548
1079442610 250096414
744932919 257907623
1031420115 589874221
1231517795 672190779
1746439433 601063235
1000890899 306715157
733932542 58165026
1862576468 474532597
1821561896 453575357
1644354470 463914440
1948043427 698524047
1276493342 230195427
1688261988 661965464
2065288152 1519784203
1111418903 842602403
804741115 431910999
1037589552 633433333
1439971050 1200386824
1948181368 1600219307
401086167 104040836
953495417 562641994
874499605 336781167
1708225080 1661663924
1447153164 430042817
2050925073 637683914
1610144068 1249915029
636857449 604648695
2027121358 437999261
1565711969 604251
1803936292 583131298
1719844225 292000955
1624339922 659917290
1468948390 1143584818
1103431483 251395476
1851642936 1377296675
529220049 498985712
1871581316 1474200403
1367337782 623595527
1049824929 681937951
1557833776 210918418
407499401 391649008
1883783706 517082324
401339021 58790720
584425233 253153420
1992173300 1039112723
1030518057 461370944
1845490138 1046435745
1701980932 711346084
1060133086 552170939
2132440890 579453447
1611285775 35744584
1954311973 1111231755
580093799 358949346
506862966 60722413
1925725560 943442983
1574449480 478912026
1321137358 305712026
1942670347 1522149573
1150401083 119153041
2008590856 995728040
2091069599 1036867238
1945357308 181749981
1064727739 950184633
2045362569 1637959654
462820324 0
35
1692835485 1622640939
831428520 143044611
1582136302 1116576084
1516313475 822310560
1359739835 492135376
1773919118 743144925
1512513892 271863523
1910169151 1057053305
1479881854 218720624
1693007551 219586907
1220240403 111624371
1855881545 1317579566
1748637787 1041576914
1643986901 963242805
1490092549 31179729
1261782657 51695435
1759191540 380102074
197075352 177360884
1931910463 825657390
1813892648 415882124
1819070730 1544560418
644620390 79895615
1029585211 628321930
1962897398 772782972
1828759214 182313348
1170153834 120248812
1626339674 239671457
1046765245 719041902
797436491 69663310
1529291211 452663555
1713095981 690897338
1448523933 467480437
1467119539 470857119
2071728190 218359838
2345210196 0
5
1692936327 1170008786
1977394370 1757739265
1538778723 108436640
1673484155 1428475824
1895304845 0
100
1696717902 302430401
2001440805 31763027
1265250333 679274137
1124933714 537353107
1175182862 314903010
891260175 711323400
1482787418 170920951
1807894538 537378763
1890066376 1556134106
1165675574 767475008
1495670184 16060637
1707340707 1432694353
598771335 441457503
1081956326 20252536
2125034947 1695931933
1407268591 661820972
1725804526 1682532100
1962535050 252341004
1353855657 1125251077
1662787234 1260343427
1960767228 1478237781
504073124 134007653
1703761915 579556307
1764512604 1561654005
1422959334 173728401
1299633546 884833985
560071330 80530420
2041400849 698018509
1625324671 839755657
1508588746 510799115
1860822132 1659117540
1033221263 796997599
1283140054 704104404
1984322851 1247823058
1680366513 93118847
837228719 362542294
1862290220 990225089
2085056162 900762988
1511311613 177702975
1651631495 596915343
1990587226 1460054664
1748225594 151770769
1739532537 556300104
687303199 480979101
1245932277 190328380
1917184748 270737642
1279420048 458989325
1270934245 472325251
1719502653 993651292
1464425572 290510337
1376904328 347260624
1696238669 837895958
1467092727 20227835
1449175487 666806619
1680369382 410761577
1657383181 628737830
1577165570 1031080069
1449043004 1317172040
1601211248 1439864579
2034421324 1958244857
284564934 236763869
1375416816 3148392
1613954789 1116450204
872193466 232208640
1918417490 752825881
794063739 523278372
1874221622 1365878915
1391520876 752666758
1194447102 395311158
1827712335 755127657
1949661076 1648218406
1215186989 1078241153
1532045085 752816065
1753439978 147622465
1130310781 747156970
492954905 101178209
1842593886 1761252262
1944822016 452177186
1922515572 680265842
442443050 25069866
1551955436 378636390
747760669 539261639
989376333 482150010
1865316075 1039417939
1489048825 1400993619
1884804789 1816663284
382811826 57353170
1862054334 268003807
2118982274 1066776490
2013760917 937455299
1871175901 1102841439
1199770330 524708016
1815974627 1047964825
1631424728 284198600
522239272 509779215
1546998622 821325725
2144060806 454369782
264940706 141077342
1124845511 979958836
1629492965 1116067809
87
1714806646 1696801937
1524756582 661514023
882846850 543344042
1971737163 1042490827
1166341684 473953172
1993546931 714115081
1854002628 503408823
1930023984 234450826
1972725021 172611153
1883388634 589401914
279901441 203814858
1314331957 960408257
1804344874 1094484547
1660906775 1007718031
1867723719 1064077034
1846381869 1001373133
248904792 44694788
1713509113 1191955921
1475705031 885816814
1566551894 888170238
1290872906 318359769
1821129148 1780653392
1360015032 109454752
2104187803 323706225
1813923825 954445724
1719472456 939873963
1364377403 486130313
1681774652 260629555
1888332049 406814350
1683412177 11409614
835644521 635337915
2075104072 134413067
1713171375 1139710824
1958044296 811076244
1679725399 324757531
1443876490 666956330
1817884617 936912050
1592744764 1330724546
877588693 715475655
1238394032 276989100
1758740651 1189204049
550523511 322148914
2056752571 1289098101
2033904278 1943678685
184507400 49485532
911323069 627164935
1675256441 753450279
1764657487 376908070
1849218939 1439368389
455808763 61230468
1076517815 703710892
605191451 485190730
1863357331 970164765
1804087472 692637916
1468183803 976529911
1178072991 73534397
2005366356 1089513354
1900439906 1583989274
1576782927 1169218311
1287389737 1042450109
1261566234 1037648007
1528889562 35356362
1405032179 645650041
660747643 205370796
1033005006 547697264
1457333494 1353039623
832605678 600186294
1259722687 600353299
1979434718 117924636
1690129749 1244492574
1843453085 1169424326
744309738 521522791
1352784930 846947721
1918208566 1128734531
2080728517 1306859998
1830924111 1180477471
1758645210 1048355714
1732610809 111613543
1230598701 1135593370
475439092 257363450
2065652404 1199316626
633022440 574161842
1573860892 1294052523
1323931745 1242771648
1599784201 837137214
1077805767 656963524
1798946860 1372518641
45
1696902779 1262174493
523238785 128725030
1556630835 965546681
2128907843 1648656091
1779961191 1329074634
1360534427 96241333
472897540 151977233
923298748 165224414
2071915395 230370527
1234707660 597160659
1288113382 538965867
313303623 64089317
1259843672 3835884
1496653855 45192978
1508914456 785383674
690874569 84801854
1483102217 656270390
1126254425 460433738
2042157120 1037256317
1451069486 1300555870
1353947924 1066035056
750151173 395119271
2061756721 149081855
1652804583 985652536
994591026 173319594
1432548433 78665734
1402346914 611557773
1679719945 594756269
569643343 233092153
791775032 513567475
1554286012 893921576
1890844922 344333420
1635561552 967595748
1980160692 1092322864
1275007129 1006672885
1452987337 1321622922
1973941893 1093089133
1714016795 1134632707
1360802871 117121189
1611064526 313012347
1687667106 657040966
831267929 526602688
1738958968 1578423153
692441080 643348467
761233085 177522224
5
1696970007 244591842
1921016015 571388136
1289992276 1247015107
2052766267 1517860414
1218977439 721735385
1
1697020428 1092017589
26
2 661548466 661548466
4 1195575200 1195575200
4 1779961191 26803217
5 339439688 96241333
12 163367499 3835884
13 337533700 45192978
14 581054388 581054388
16 72530595 72530595
18 1344277586 1037256317
19 714930564 714930564
20 1353947924 785456431
22 1114606122 149081855
23 1652804583 756387947
24 31889768 31889768
25 256478802 78665734
26 44356736 44356736
27 1227689682 594756269
30 602752391 602752391
31 1117752161 344333420
32 681996603 681996603
34 484624479 484624479
35 1452987337 453648648
38 430982884 117121189
39 224820999 224820999
40 654656660 654656660
42 860582838 860582838
31
8 565025544 565025544
11 1190752235 1190752235
11 157575291 1707340707
14 2125034947 1283867758
16 1725804526 618385669
20 1169611933 1169611933
23 1298218813 1298218813
28 737672995 737672995
30 505312025 505312025
37 2085056162 508603481
40 493046929 493046929
58 1366911962 1366911962
59 1413811483 1413811483
69 419532723 1827712335
70 1949661076 883399053
76 1842593886 854763083
77 250901368 1944822016
78 344805912 1922515572
83 166952089 1865316075
84 673917402 673917402
84 1065406761 1489048825
88 559750782 559750782
88 2118982274 879459855
89 592607390 592607390
89 2013760917 471877494
90 595007584 595007584
90 1871175901 172306298
92 634569055 634569055
92 175465075 1815974627
99 673266345 673266345
99 780612139 1629492965
30
0 1457171955 1457171955
0 941902574 1714806646
3 1302711336 1042490827
5 88418646 88418646
9 612082627 589401914
12 1054943008 1054943008
13 1039335208 1007718031
15 1093011692 1001373133
17 1308867596 1191955921
21 191749194 191749194
23 53350217 53350217
33 981185071 811076244
37 58890607 58890607
40 1363320304 1189204049
42 194828612 194828612
43 622081330 2033904278
48 1739010824 1439368389
52 91499877 91499877
53 44412525 44412525
56 225611543 225611543
57 399129059 399129059
58 1202779128 1169218311
65 774701428 774701428
69 917237752 917237752
75 109142007 109142007
76 131640171 131640171
78 781066530 781066530
80 1524089367 1199316626
82 865781297 865781297
86 928081782 928081782
26
2 330774233 330774233
4 597787600 597787600
4 26803217 1779961191
5 339439688 96241333
13 337533700 45192978
14 290527194 290527194
16 72530595 72530595
18 1344277586 1037256317
19 357465282 357465282
20 1353947924 785456431
23 676999519 676999519
23 756387947 1652804583
24 15944884 15944884
25 256478802 78665734
26 22178368 22178368
27 310103849 310103849
29 505869012 505869012
30 602752391 602752391
31 1117752161 344333420
32 681996603 681996603
34 484624479 484624479
35 565351552 1321622922
35 1452987337 635545328
39 224820999 224820999
40 327328330 327328330
42 430291419 430291419
5
0 216318115 216318115
1 536421381 536421381
2 15645036 1289992276
3 2052766267 963656992
4 93109621 93109621
25
8 1130051088 1130051088
8 1890066376 389979487
11 1190752235 1190752235
11 1707340707 157575291
14 2125034947 1283867758
16 1725804526 129352481
27 2041400849 174440312
30 1010624050 1010624050
30 1860822132 689772113
37 2085056162 508603481
40 986093858 986093858
69 1827712335 419532723
70 1949661076 700536083
76 1842593886 721695363
77 1944822016 250901368
78 1922515572 344805912
83 1865316075 166952089
84 1347834804 1347834804
84 1489048825 1065406761
88 2118982274 879459855
89 2013760917 471877494
90 1871175901 172306298
92 1815974627 175465075
96 2144060806 283743155
99 1629492965 780612139
24
0 1457171955 1457171955
0 1714806646 941902574
3 1302711336 1042490827
5 176837292 176837292
9 612082627 589401914
13 1039335208 1007718031
15 1093011692 1001373133
17 1308867596 1191955921
21 383498388 383498388
23 53350217 53350217
33 981185071 811076244
37 58890607 58890607
40 1363320304 1189204049
42 389657224 389657224
43 2033904278 622081330
48 1739010824 1439368389
52 91499877 91499877
53 44412525 44412525
56 225611543 225611543
57 399129059 399129059
58 1202779128 1169218311
75 218284014 218284014
76 131640171 131640171
80 1524089367 1199316626
26
2 661548466 661548466
4 1195575200 1195575200
4 1779961191 26803217
5 339439688 96241333
12 163367499 3835884
13 337533700 45192978
14 581054388 581054388
16 72530595 72530595
18 1344277586 1037256317
19 714930564 714930564
20 1353947924 785456431
22 1114606122 149081855
23 1652804583 756387947
24 31889768 31889768
25 256478802 78665734
26 44356736 44356736
27 1227689682 594756269
30 602752391 602752391
31 1117752161 344333420
32 681996603 681996603
34 484624479 484624479
35 1452987337 453648648
38 430982884 117121189
39 224820999 224820999
40 654656660 654656660
42 860582838 860582838
5
0 216318115 216318115
1 536421381 536421381
2 1289992276 15645036
3 2052766267 838204710
4 186219242 186219242
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn=60;
int gr[maxn][maxn];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for(int y=0;y<maxn;++y)
{
for(int x=y;x<maxn;++x)
{
set<int>me;
for(int y1=0;y1<y;++y1)
{
me.insert(gr[x][y1]);
}
for(int x1=y;x1<x;++x1)
{
me.insert(gr[x1][y]);
}
for(int x1=0;x1<x;++x1)
{
me.insert(gr[x1][x1]);
}
int f=0;
while(me.find(f)!=me.end())
{
f++;
}
gr[x][y]=f;
}
}
for(int j=maxn-1;j>=0;--j)
{
for(int i=0;i<maxn;++i)
{
if(i>=j)
{
if(gr[i][j]<10)
{
cout<<' '<<gr[i][j]<<' ';
}
else
{
cout<<gr[i][j]<<' ';
}
}
else cout<<" ";
}
cout<<'\n';
}
}
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"unordered_set"
#include"map"
#include"unordered_map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
#include"iomanip"
#include"iostream"
#include"limits"
#include"cmath"
#include"vector"
#include"algorithm"
#include"list"
#include"queue"
#include"stack"
#include"set"
#include"map"
#include"string"
#include"cstring"
#include"assert.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define mp make_pair
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
#define INF 2100000000
struct edge
{
int a,b;ll cap,flow; int back;
edge(int a,int b,int c,int d,int e):
a(a),b(b),cap(c),flow(d),back(e)
{
}
};
struct max_flow
{
vector<vector<edge> >g;
vector<ll>ex;
vector<int>h;
vector<int>active;
vector<int>count;
int size;
max_flow(int n):
g(n),ex(n),h(n),count(2*n),active(n)
{
}
void addEdge(int a,int b,int cap)
{
if(a!=b)
{
g[a].pb(edge(a,b,cap,0,g[b].size()));
g[b].pb(edge(b,a,0,0,g[a].size()-1));
}
}
ll maximum_flow(int s,int t)
{
h[s]=g.size();
count[g.size()]++;
count[0]=g.size()-1;
queue<int>qq;
active[s]=1;
active[t]=1;
for(int i=0;i<g[s].size();++i)
{
if(g[s][i].cap>g[s][i].flow)
{
int vert = g[s][i].b;
g[s][i].flow+=g[s][i].cap;
g[g[s][i].b][g[s][i].back].flow=-g[s][i].cap;
ex[g[s][i].b]+=g[s][i].flow;
if(active[vert]==0&&ex[vert]>0)
{
qq.push(vert);
active[vert]=1;
}
}
}
for(;;)
{
if(qq.empty())
break;
int v=qq.front();
active[v]=0;
qq.pop();
for(int j=0;j<g[v].size()&&ex[v]>0;++j)
{
int vert = g[v][j].b;
if(h[v]==h[vert]+1)
{
int tob=min(g[v][j].cap-g[v][j].flow,ex[v]);
if(tob>0)
{
g[v][j].flow+=tob;
g[vert][g[v][j].back].flow=-g[v][j].flow;
ex[v]-=tob;
ex[vert]+=tob;
if(active[vert]==0&&ex[vert]>0)
{
active[vert]=1;
qq.push(vert);
}
}
}
}
if(ex[v]>0)
{
if(count[h[v]]==1)
{
int k=h[v];
for(int i=0;i<g.size();++i)
{
if(h[i]>=k)
{
count[h[i]]--;
h[i]=max(h[i],(int)g.size()+1);
count[h[i]]++;
if(active[i]==0&&ex[i]>0)
{
qq.push(i);
active[i]=1;
}
}
}
}
else
{
count[h[v]]--;
h[v]=INF;
for(int i=0;i<g[v].size();++i)
{
if(g[v][i].flow<g[v][i].cap)
{
h[v]=min(h[v],h[g[v][i].b]+1);
}
}
count[h[v]]++;
if(active[v]==0&&ex[v]>0)
{
qq.push(v);
active[v]=1;
}
}
}
}
ll ans=0;
for(int i=0;i<g[s].size();++i)
{
ans+=g[s][i].flow;
}
return ans;
}
void bfs(int s)
{
int n = g.size();
for(int i=0;i<n;++i)
{
active[i]=0;
h[i]=0;
}
queue<int>qq;
qq.push(s);
h[s]=1;
while(!qq.empty())
{
int vert = qq.front();
qq.pop();
for(edge &ed : g[vert])
{
if(ed.flow<ed.cap&&h[ed.b]==0)
{
qq.push(ed.b);
h[ed.b]=1;
}
}
}
}
};
int main()
{
int n;
scanf("%d",&n);
max_flow ob(n+2);//0 money sink 1-n items n+1-n+m vouchers n+m+1 source node
for(int i=1;i<=n;++i)
{
int pa;
scanf("%d",&pa);
ob.addEdge(0,i,pa);
ob.addEdge(i,n+1,10000-pa);
}
for(int i=1;i<=n;++i)
{
for(int j=i+1;j<=n;++j)
{
int pij;
scanf("%d",&pij);
ob.addEdge(i,j,pij);
ob.addEdge(j,i,pij);
}
}
ll ans=ob.maximum_flow(0,n+1);
ob.bfs(0);
for(int i=1;i<=n;++i)
{
printf(ob.h[i]==1?"A":"B");
}
printf("\n");
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment