Submission #283627

# Submission time Handle Problem Language Result Execution time Memory
283627 2020-08-26T03:48:30 Z Marlov Treasure (different grader from official contest) (CEOI13_treasure2) C++14
100 / 100
1 ms 384 KB
/*
Code by @marlov       
*/
#include "treasure.h"
//#include <iostream>
//using namespace std;
#define maxN 105
 
int N;
int psum[maxN][maxN];

//countTreasure(x1+1,y1+1,x2,y2);
//Report( x1,y1);
/*
int countTreasure(int x1,int y1,int x2,int y2){
	cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;
	int x;
	cin>>x;
	return x;
}
*/

void findTreasure(int givenN){
//	ios_base::sync_with_stdio(0); cin.tie(0);
    N=givenN;
	int mid=((N+1)/2.0);
	for(int i=mid;i<=N;i++){
		for(int j=mid;j<=N;j++){
			psum[i][j]=countTreasure(1,1,i,j);
		}
	}
	for(int i=1;i<mid;i++){
		for(int j=mid;j<=N;j++){
			psum[i][j]=psum[N][j]-countTreasure(i+1,1,N,j);
		}
	}
	for(int i=mid;i<=N;i++){
		for(int j=1;j<mid;j++){
			psum[i][j]=psum[i][N]-countTreasure(1,j+1,i,N);
		}
	}
	for(int i=1;i<mid;i++){
		for(int j=1;j<mid;j++){
			psum[i][j]=-(psum[N][N]-countTreasure(i+1,j+1,N,N)-psum[i][N]-psum[N][j]);
		}
	}
	for(int i=1;i<=N;i++){
		for(int j=1;j<=N;j++){
			if(psum[i][j]-psum[i-1][j]-psum[i][j-1]+psum[i-1][j-1]==1) Report(i,j);
		}
	}
}


/*
int main(){
//	ios_base::sync_with_stdio(0); cin.tie(0);
    cin>>N;
	for(int i=mid;i<=N;i++){
		for(int j=mid;j<=N;j++){
			psum[i][j]=countTreasure(1,1,i,j);
		}
	}
	for(int i=1;i<mid;i++){
		for(int j=mid;j<=N;j++){
			psum[i][j]=psum[N][j]-countTreasure(i+1,1,N,j);
		}
	}
	for(int i=mid;i<=N;i++){
		for(int j=1;j<mid;j++){
			psum[i][j]=psum[i][N]-countTreasure(1,j+1,i,N);
		}
	}
	for(int i=1;i<mid;i++){
		for(int j=1;j<mid;j++){
			psum[i][j]=-(psum[N][N]-countTreasure(i+1,j+1,N,N)-psum[i][N]-psum[N][j]);
		}
	}
	for(int i=1;i<=N;i++){
		for(int j=1;j<=N;j++){
			if(psum[i][j]-psum[i-1][j]-psum[i][j-1]+psum[i-1][j-1]==1) cout<<i<<" "<<j<<endl;
		}
	}
}
*/
/* stuff you should look for
	* int overflow, array bounds
	* special cases (n=1,n=0?)
	* do smth instead of nothing and stay organized
*/
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct - N = 5, K = 289, score = 10
2 Correct 0 ms 256 KB Output is correct - N = 10, K = 4475, score = 10
3 Correct 0 ms 384 KB Output is correct - N = 15, K = 22289, score = 10
4 Correct 0 ms 384 KB Output is correct - N = 16, K = 28928, score = 10
5 Correct 0 ms 384 KB Output is correct - N = 55, K = 4005289, score = 10
6 Correct 0 ms 384 KB Output is correct - N = 66, K = 8305803, score = 10
7 Correct 1 ms 384 KB Output is correct - N = 77, K = 15383161, score = 10
8 Correct 0 ms 384 KB Output is correct - N = 88, K = 26244416, score = 10
9 Correct 1 ms 384 KB Output is correct - N = 99, K = 42032201, score = 10
10 Correct 1 ms 384 KB Output is correct - N = 100, K = 43760000, score = 10