#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main( )
{
ll n,q; cin >> n>> q;
ll b[ n] [ n] ;
for ( ll i= 0 ; i< n; i++ )
{
for ( ll j= 0 ; j< n; j++ )
{
cin >> b[ i] [ j] ;
}
}
ll ans[ n] ;
memset ( ans,0 ,sizeof ( ans) ) ;
ll h;
for ( ll i= 1 ; i< ( n- 1 ) ; )
{
ll x= b[ 0 ] [ i] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ i] [ i+ 1 ] ;
h= i+ 1 ;
if ( x+ y== z&& x! = 0 )
{
ans[ i] = x- 2 * x;
ans[ i+ 1 ] = y;
i++ ;
}
else if ( x== 0 )
{
ans[ i] = 0 ;
}
else
{
ans[ i] = x- 2 * x;
ans[ i+ 1 ] = y- 2 * y;
i++ ;
}
i++ ;
}
if ( h== n- 1 )
{
ll i= n- 2 ;
ll x= b[ 0 ] [ i] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ i] [ i+ 1 ] ;
if ( x+ y== z&& x! = 0 )
{
if ( x< 0 )
ans[ i+ 1 ] = y;
else ans[ i+ 1 ] = y- 2 * y;
}
else if ( x== 0 )
{
ll c= - 1 ;
for ( ll j= 1 ; j< i; j++ )
{
if ( ans[ i] ! = 0 ) { c= j; break ; }
}
if ( c== - 1 ) { ans[ i+ 1 ] = y- 2 * y; }
else {
ll x= b[ 0 ] [ c] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ c] [ i+ 1 ] ;
if ( x+ y== z) {
if ( x< 0 )
ans[ i+ 1 ] = y;
else ans[ i+ 1 ] = y- 2 * y;
}
else {
if ( x< 0 )
ans[ i+ 1 ] = y- 2 * y;
else ans[ i+ 1 ] = y;
}
}
}
else
{
if ( x< 0 )
ans[ i+ 1 ] = y- 2 * y;
else ans[ i+ 1 ] = y;
}
}
for ( ll i= 0 ; i< n; i++ )
{
cout << ans[ i] << " " ;
}
cout << endl;
while ( q-- )
{
ll p; cin >> p;
p-- ;
ll a[ n] ;
for ( ll i= 0 ; i< n; i++ )
{
cin >> a[ i] ;
}
for ( ll i= 0 ; i< n; i++ )
{
b[ i] [ p] = a[ i] ;
b[ p] [ i] = a[ i] ;
}
h= 0 ;
for ( ll i= 1 ; i< ( n- 1 ) ; )
{
h= i+ 1 ;
ll x= b[ 0 ] [ i] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ i] [ i+ 1 ] ;
if ( ( x+ y) == z&& x! = 0 )
{
ans[ i] = x- 2 * x;
ans[ i+ 1 ] = y;
i++ ;
}
else if ( x== 0 )
{
ans[ i] = 0 ;
}
else
{
ans[ i] = x- 2 * x;
ans[ i+ 1 ] = y- 2 * y;
i++ ;
}
i++ ;
}
if ( h== n- 1 && b[ 0 ] [ n- 2 ] == 0 )
{
ll i= n- 2 ;
ll x= b[ 0 ] [ i] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ i] [ i+ 1 ] ;
if ( x+ y== z&& x! = 0 )
{
if ( x< 0 )
ans[ i+ 1 ] = y;
else ans[ i+ 1 ] = y- 2 * y;
}
else if ( x== 0 )
{
ll c= - 1 ;
for ( ll j= 1 ; j< i; j++ )
{
if ( ans[ i] ! = 0 ) { c= j; break ; }
}
if ( c== - 1 ) { ans[ i+ 1 ] = y- 2 * y; }
else {
ll x= b[ 0 ] [ c] ;
ll y= b[ 0 ] [ i+ 1 ] ;
ll z= b[ c] [ i+ 1 ] ;
if ( x+ y== z) {
if ( x< 0 )
ans[ i+ 1 ] = y;
else ans[ i+ 1 ] = y- 2 * y;
}
else {
if ( x< 0 )
ans[ i+ 1 ] = y- 2 * y;
else ans[ i+ 1 ] = y;
}
}
}
else
{
if ( x< 0 )
ans[ i+ 1 ] = y- 2 * y;
else ans[ i+ 1 ] = y;
}
}
for ( ll i= 0 ; i< n; i++ )
{
cout << ans[ i] << " " ;
}
cout << endl;
}
return 0 ;
}
Comments
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IG1haW4oKQp7CglsbCBuLHE7Y2luPj5uPj5xOwoJbGwgYltuXVtuXTsKCWZvcihsbCBpPTA7aTxuO2krKykKCXsKCQlmb3IobGwgaj0wO2o8bjtqKyspCgkJewoJCQljaW4+PmJbaV1bal07CgkJfQoJfQoJbGwgYW5zW25dOwoJbWVtc2V0KGFucywwLHNpemVvZihhbnMpKTsKCWxsIGg7Cglmb3IobGwgaT0xO2k8KG4tMSk7KQoJewoJCWxsIHg9YlswXVtpXTsKCQlsbCB5PWJbMF1baSsxXTsKCQlsbCB6PWJbaV1baSsxXTsKCQloPWkrMTsKCQlpZih4K3k9PXomJnghPTApCgkJewoJCQlhbnNbaV09eC0yKng7CgkJCWFuc1tpKzFdPXk7CgkJCWkrKzsKCQl9CgkJZWxzZSBpZih4PT0wKQoJCXsKCQkJYW5zW2ldPTA7CgkJfQoJCWVsc2UKCQl7CgkJCWFuc1tpXT14LTIqeDsKCQkJYW5zW2krMV09eS0yKnk7CgkJCWkrKzsKCQl9CgkJaSsrOwoJfQoJaWYoaD09bi0xKQoJewoJbGwgaT1uLTI7CiAgICAgICAgICBsbCB4PWJbMF1baV07CgkJbGwgeT1iWzBdW2krMV07CgkJbGwgej1iW2ldW2krMV07CgkJaWYoeCt5PT16JiZ4ISA9MCkgCgkJewoJCSAgICAgICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eTsKCQkJZWxzZSBhbnNbaSsxXT15LTIqeTsKCQkJCgkJfQoJCWVsc2UgaWYoeD09MCkKCQl7CgkJbGwgYz0tMTsKCQkJZm9yKGxsIGo9MTtqPGk7aisrKSAKCQkJewoJCQkgIGlmKGFuc1tpXSEgPTApIHtjPWo7YnJlYWs7fSAKCQkJfSAKCQkJaWYoYz09LTEpIHthbnNbaSsxXT15LTIqeTt9IAoJCQllbHNlewoJCQlsbCB4PWJbMF1bY107CgkJbGwgeT1iWzBdW2krMV07CgkJbGwgej1iW2NdW2krMV07CgkJaWYoeCt5PT16KSB7CgkJICAgICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eTsKCQkJZWxzZSBhbnNbaSsxXT15LTIqeTsKCQl9IAoJCWVsc2V7CgkJICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eS0yKnk7CgkJCWVsc2UgYW5zW2krMV09eTsKCQl9IAoJCX0gCgkJfQoJCWVsc2UKCQl7CgkJCWlmKHg8MCkgCgkJCWFuc1tpKzFdPXktMip5OwoJCQllbHNlIGFuc1tpKzFdPXk7CgkJCQoJCX0KCX0KICAgIGZvcihsbCBpPTA7aTxuO2krKykKICAgIHsKICAgIAljb3V0PDxhbnNbaV08PCIgIjsKICAgIH0KICAgIGNvdXQ8PGVuZGw7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAJbGwgcDtjaW4+PnA7CiAgICAJcC0tOwogICAgCWxsIGFbbl07CiAgICAJZm9yKGxsIGk9MDtpPG47aSsrKQogICAgCXsKICAgIAkJY2luPj5hW2ldOwogCiAgICAJfQogICAgCWZvcihsbCBpPTA7aTxuO2krKykKICAgIAl7CiAgICAJCWJbaV1bcF09YVtpXTsKICAgIAkJYltwXVtpXT1hW2ldOwogICAgCX0KICAgICBoPTA7ICAgCglmb3IobGwgaT0xO2k8KG4tMSk7KQoJewoJCWg9aSsxOwoJCWxsIHg9YlswXVtpXTsKCQlsbCB5PWJbMF1baSsxXTsKCQlsbCB6PWJbaV1baSsxXTsKCQlpZigoeCt5KT09eiYmeCE9MCkKCQl7CgkJCWFuc1tpXT14LTIqeDsKCQkJYW5zW2krMV09eTsKCQkJaSsrOwoJCX0KCQllbHNlIGlmKHg9PTApCgkJewogICAgICAgICAgYW5zW2ldPTA7CiAgCgkJfQoJCWVsc2UKCQl7CgkJCWFuc1tpXT14LTIqeDsKCQkJYW5zW2krMV09eS0yKnk7CgkJCWkrKzsKCQl9CgkJaSsrOwoJfQoJaWYoaD09bi0xJiZiWzBdW24tMl09PTApCgl7CiAgICAgICAgbGwgaT1uLTI7CiAgICAgICAgICBsbCB4PWJbMF1baV07CgkJbGwgeT1iWzBdW2krMV07CgkJbGwgej1iW2ldW2krMV07CgkJaWYoeCt5PT16JiZ4ISA9MCkgCgkJewoJCSAgICAgICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eTsKCQkJZWxzZSBhbnNbaSsxXT15LTIqeTsKCQkJCgkJfQoJCWVsc2UgaWYoeD09MCkKCQl7CgkJbGwgYz0tMTsKCQkJZm9yKGxsIGo9MTtqPGk7aisrKSAKCQkJewoJCQkgIGlmKGFuc1tpXSEgPTApIHtjPWo7YnJlYWs7fSAKCQkJfSAKCQkJaWYoYz09LTEpIHthbnNbaSsxXT15LTIqeTt9IAoJCQllbHNlewoJCQlsbCB4PWJbMF1bY107CgkJbGwgeT1iWzBdW2krMV07CgkJbGwgej1iW2NdW2krMV07CgkJaWYoeCt5PT16KSB7CgkJICAgICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eTsKCQkJZWxzZSBhbnNbaSsxXT15LTIqeTsKCQl9IAoJCWVsc2V7CgkJICAgaWYoeDwwKSAKCQkJYW5zW2krMV09eS0yKnk7CgkJCWVsc2UgYW5zW2krMV09eTsKCQl9IAoJCX0gCgkJfQoJCWVsc2UKCQl7CgkJCWlmKHg8MCkgCgkJCWFuc1tpKzFdPXktMip5OwoJCQllbHNlIGFuc1tpKzFdPXk7CgkJCQoJCX0KCX0KICAgIGZvcihsbCBpPTA7aTxuO2krKykKICAgIHsKICAgIAljb3V0PDxhbnNbaV08PCIgIjsKICAgIH0KICAgIGNvdXQ8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfSAKQ29tbWVudHMgCg==