← Back to topics
Topic

O-Matriangle

V
Vidakovic
Evo moje rešenje, ide 6/11
Od 6-9 testa vraća Wrong Result, a na 11. TLE.
Da li se može fixati kod, ili nova ideja:


// task: O-matriangle
// Dragan Vidakovic 21.01.2012. u 0:30

# include <iostream>
# include <algorithm>
# include <string>
# include <cstring>
# include <cstdio>
using namespace std;

long long n,i,j,x,y,value;
long long p,brojac,a[101][101],maks;
long long jen=0,dva=0,tri=0,cet=0;
unsigned long long sum;
string s;


void pripada (long long a,long long b, long long n,unsigned long long sum)
{
// u ovoj funkciji odredjujem pripadnost elementa
// 1 - iznad glavne
// 2 - ispod sporedne
// 3 - ispod glavne
// 4 - iznad sporedne

// provjera za glavnu dijagonalu

if (a == b) {jen+=sum; tri+=sum;}

// iznad glavne

if (a < b) jen+=sum;

// ispod glavne

if (a > b) tri+=sum;

// sporedna

if (b == n-a+1) {dva+=sum; cet+=sum;}

// iznad sporedne

if ( a < n && b <= n-a) cet+=sum;

// ispod sporedne

if ( a > 1 && b > n-a+1) dva+=sum;
}


int main ()
{
scanf("%lld%lld",&n,&p);

//for (i=1; i<=n; i++)
//for (j=1; j<=n; j++)
//a[i][j]=0;

for (brojac =0; brojac < p; brojac++)
{
cin>>s;

if (s == "PUT")
{
scanf("%lld%lld%lld",&x,&y,&value);

sum=value-a[x][y];

pripada(x,y,n,sum);

a[x][y]=value;
}

if (s == "ADD")
{
scanf("%lld%lld%lld",&x,&y,&value);

sum=a[x][y]+value;

pripada(x,y,n,sum);

a[x][y]+=sum;
}

if (s == "SUB")
{
scanf("%lld%lld%lld",&x,&y,&value);

sum=-1*value;

pripada(x,y,n,sum);

a[x][y]-=value;
}

if (s == "MUL")
{
scanf("%lld%lld%lld",&x,&y,&value);

sum=(value-1)*a[x][y];

pripada(x,y,n,sum);

a[x][y]+=sum;
}

if (s == "QUERRY")
{
maks=max( max(jen,dva), max(tri,cet) );


if (jen == maks) printf("1");
if (dva == maks) printf("2");
if (tri == maks) printf("3");
if (cet == maks) printf("4");
printf("\n");

}


}



//system("pause");
}