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:
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");
}