143A - Help Vasilisa the Wise 2 - CodeForces Solution


brute force math *1000

Please click on ads to support us..

Python Code:

import sys

r1, r2 = map(int, input().strip().split())
if r1 == 1 or r2 == 1:
    print(-1)
    sys.exit(0)
c1, c2 = map(int, input().strip().split())
if c1 == 1 or c2 == 1:
    print(-1)
    sys.exit(0)
d1, d2 = map(int, input().strip().split())
if d1 == 1 or d2 == 1:
    print(-1)
    sys.exit(0)
if r1 == r2 == c1 == c2 == d1 == d2:
    print(-1)
    sys.exit(0)

x, a, b, c = 0, 0, 0, 0

for i in range(1, 10):
    x = i
    a = r1 - x
    b = c1 - x
    c = d1 - x
    if x == b or x == a or x == c or a == b or c == b or c == a:
        continue
    if 1 > a or a > 9:
        continue

    if 1 > c or c > 9:
        continue
    if 1 > b or b > 9:
        continue
    if c + b != r2 or a + b != d2 or a + c != c2:
        continue
    else:
        print(x, a)
        print(b, c)
        sys.exit(0)

print(-1)

C++ Code:

#include<iostream>
#include <string.h>
#include<math.h>
// #include <bits/stdc++.h>

using namespace std;

bool isPrime(int n){
	for (int i=2; i<n; i++){
		if (n%i==0) return 0;
	}
	return 1;
}


int maxRepetition(string s){
	unsigned int firstPtr = 0, secondPtr = 1, maxLength = -1, length = 1;
	while (secondPtr<=s.length()){
		if (s[firstPtr]!=s[secondPtr]){
			if (length>maxLength) {
				maxLength = length;
			}
			firstPtr = secondPtr;
			secondPtr++;
			length = 1;
		} 
		else{
			++length;
			++secondPtr;
		}
	} 
	// cout << maxLength << " ";
	return maxLength;
}


void odd_EvenArray(int arr[], int size){
	int even = 0, odd = 0, cnt = 0, oddArray[300], evenArray[300];
	for (int i=0; i<size; i++){
		if (arr[i]%2==0) {
			evenArray[even] = i+1;
			even++;
		}
	}
	for (int i=0; i<size; i++){
		if (arr[i]%2!=0) {
			oddArray[odd] = i+1;
			odd++;
		}
	}
	if (odd>=3){
		cout << "YES\n";
		cout << oddArray[0] << " " << oddArray[1] << " " << oddArray[2] << "\n";
	}
	else if ((odd>=1 && even>=2)){
		cout << "YES\n";
		cout << oddArray[0] << " " << evenArray[0] << " " << evenArray[1] << "\n";
	}
	else{
		cout << "NO\n";
	}
}


// int moves2_3(int n){
// 	if (n==1) return 2;
// 	if (n%3==0) return n/3;
// 	return (n/3+1);
// }

void roundCheck(int n){
	if (n<10 && n>0){
		cout << 1 << "\n" << n << "\n";	
	}
	else{
		int digit, power = 0, cnt = 0, m = n;
		while (m>0){
			if (m%10!=0) cnt++;
			m/=10;
		}
		cout << cnt << "\n";
		while (n>0){
			digit = n%10;
			
			if (digit==0){
				n/=10;
				power++;
			}
			else{
				cout << digit * pow(10,power) << " ";
				n/=10;
				power++;
			}
		}
		cout << "\n";
	}
}


int AverageArray(int arr[] ,int size, int ptr, int avg){
	// Array to be sorted
	if (ptr==size) return avg;
	avg = arr[ptr]/size;
	return AverageArray(arr, size, ++ptr, avg);
}

int aTob(long long int a, long long int b){
	long long int diff, cnt = 0;
	if (a==b) return 0;
	else{
		if (a>b){
			diff = a - b;
			while (diff!=0){
				if (diff>10){
					a-=10;
					cnt++;
					diff = a - b;
				}
				else{
					a-=diff;
					cnt++;
					diff = a - b;
				}
			}
		}
		else{
			diff = b - a;
			while (diff!=0){
				if (diff>10) {
					b-=10;
					cnt++;
					diff = b - a;
				}
				else{
					b = b - diff;
					cnt++;
					diff = b - a;
				}
			}
		}
	}
	return cnt;
}

void differentNum(int arr[], int n){
	int cnt;
	for (int i=0; i<n; i++){
		cnt = 0;
		for (int j=0; j<i; j++){
			if (arr[i]==arr[j]) cnt++;
		}
		for (int j=i+1; j<n; j++){
			if (arr[i]==arr[j]) cnt++;
		}
		if (cnt==0) {
			cout << i+1 << "\n";
			break;
		}
		// cout << cnt << " ";
	}
}

void repeatedString(string s){
	bool flag = 1;
	int arr[50], index;
	for (int i=0; i<s.length()-1; i++){
		if (!flag){
			cout << "NO\n";
			break;
		}
		if (s[i]!='-'){
			index = 1;
			arr[0] = i;
			for (int j=i+1; j<s.length(); j++){
				if (s[i]==s[j]){
				arr[index] = j;
				index++;
				s[j] = '-';
				}
			}
			for (int j=1; j<index; j++){
				if ((arr[j] - arr[j-1])!=1){
					flag = 0;
					break;
				}
			}
		}
	}
	if (flag) cout << "YES\n";
}

int sum2Nterms(int n){
	if (n==0) return 0;
	return sum2Nterms(n-1) + n;
}

int ans(int n){
	int sum = 0, plates = 0;
	for (int i=1; i<=n; i++){
		plates++;
		sum+=sum2Nterms(i);
		if (sum>n){
			sum-=sum2Nterms(i);
			plates--;
		}
	}
	// cout << plates << " ";
	return plates;
}

bool isPowerN(int n, int power){
	float a = log(n)/log(power);
	float b = a - int(a);
	if (b>0) return 0;
	return 1;
}

int main(){
	
	// int n,m; cin >> n >> m;
	// int arr[50];
	// for (int i=0; i<m; i++){
	// 	cin >> arr[i];
	// }
	// sort(arr,arr+m);
	// int min = 9999, diff;
	// int firstPtr = 0;
	// int secondPtr = n-1;
	// while (secondPtr<m){
	// 	diff = arr[secondPtr] - arr[firstPtr];
	// 	if (diff < min) min = diff;
	// 	firstPtr++; secondPtr++;
	// }
	// cout << min << "\n";
	
	// int a,b; cin >> a >> b;
	// if (a>=b) numberEmeralds(a,b);
	// else{
	// 	numberEmeralds(b,a);
	// }
	
	// int t, arr[10000], ele; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> ele;
	// 	arr[i] = moves2_3(ele);
	// }
	
	// for (int i=0; i<t; i++){
	// 	cout << arr[i] << "\n";
	// }
	
	// long long int n, arr[200000], ele; cin >> n;
	// long long sum = (n * (n + 1)) / 2;
	// for (int i=0; i<n-1; i++){
	// 	cin >> ele;
	// 	sum-=ele;
	// }
	// cout << sum << "\n";
	
	// string s; cin >> s;
	
	// long long int n, arr[200000], moves = 0, diff; cin >> n;
	// for (long long int i=0; i<n; i++){cin >> arr[i];}
	// long long int curPtr = 1;
	
	// while (curPtr<n){
	// 	diff = arr[curPtr] - arr[curPtr-1];
	// 	if (diff < 0) {
	// 		arr[curPtr]+=(-diff);
	// 		moves+=(-diff);
	// 	}
	// 	curPtr++;
	// }
	// cout << moves << "\n";
	
	// int n, m; cin >> n >> m;
	// int num2 = n/2;
	// int num1 = n - num2*2;
	// int min = num1 + num2, max = 0;
	// for (int i=0; i<num2; i++){
	// 	max+=2;
	// }
	// for (int j=0; j<num1; j++){
	// 	max++;
	// }
	// int flag = 0;
	// for (int i=min; i<=max; i++){
	// 	if (i%m==0){
	// 		cout << i << "\n";
	// 		flag = 1;
	// 		break;
	// 	}
	// }
	// if (!flag) cout << -1 << "\n";
	
	// int t, n, digit, power; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// }
	
	// int t, flag, ele, arr[6], numDigits, sum1, sum2; cin >> t;
	// string ans[1000];
	// for (int i=0; i<t; i++){
	// 	cin >> ele;
	// 	numDigits = 0;
	// 	sum1 = 0, sum2 = 0;
	// 	while (ele>0){
	// 		arr[numDigits] = ele%10;
	// 		numDigits++;
	// 		ele/=10;
	// 	}
	// 	for (int j=0; j<numDigits/2; j++){
	// 		sum1+=arr[j];
	// 	}
	// 	for (int j=numDigits/2; j<numDigits; j++){
	// 		sum2+=arr[j];
	// 	}
	// 	if (sum2==sum1) ans[i] = "YES\n";
	// 	else{
	// 		ans[i] = "NO\n";
	// 	}
	// }
	// for (int i=0; i<t; i++){
	// 	cout << ans[i]; 
	// }
	
	
	// int n, x,numberElements, t; cin >> t;
	// for (int j=0; j<t; j++){
	// 	cin >> n >> x;
	// 	if (n==1 || n==2) cout << 1 << "\n";
	// 	else{
	// 		numberElements = n - 2;
	// 		if (numberElements%x==0) cout << (numberElements/x)+1 << "\n";
	// 		else{
	// 			cout << (numberElements/x)+2 << "\n";
	// 		}
	// 	}
	// }
	
	// int t; cin >> t;
	// long long int a,b;
	// float diff;
	// for (int i=0; i<t; i++){
	// 	cin >> a >> b;
	// 	// cout << aTob(a,b) << "\n";
	// 	if (a==b) cout << 0 << "\n";
	// 	else{
	// 		diff = a - b;
	// 		if (diff<0) diff = -diff;
	// 		diff = diff/10;
	// 		if (float(diff - int(diff)) > 0.0) cout << int(diff)+1 << "\n";
	// 		else{
	// 			cout << int(diff) << "\n";
	// 		}
	// 	}
	// }
	
	// int n, diff; cin >> n;
	// if (n==12) cout << 4 << " " << 8 << "\n";
	// if (n==13) cout << 4 << " " << 9 << "\n";
	// if (n==14) cout << 4 << " " << 10 << "\n";
	
	// if (n>=15){
	// 	if (n%2==0){
	// 		diff = n - 10;
	// 		cout << diff << " " << n - diff << "\n";
	// 	}
	// 	else{
	// 		diff = (n + 1) - 10;
	// 		cout << diff << " " << n - diff << "\n";
	// 	}
	// }
	
	// int n, k; cin >> n >> k;
	// int arr[2000], cnt = 0;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// }
	// if (n>=3){
	// 	sort(arr,arr+n);
	// 	int teamPtr = 0, max = -1, teams;
	// 	while (teamPtr<n){
	// 		if (arr[teamPtr]>max) max = arr[teamPtr];
	// 		if (arr[teamPtr+1]>max) max = arr[teamPtr+1];
	// 		if (arr[teamPtr+2]>max) max = arr[teamPtr+2];
	// 		teamPtr+=3;
	// 		if ((5 - max) >= k) cnt++;
	// 		if (n - teamPtr < 3) break;
	// 		max = -1;
	// 	}
	// 	cout << cnt << "\n";
	// }
	// else{
	// 	cout << 0 << "\n";
	// }
	
	// int n, c, arr[100], max = -1, diff; cin >> n >> c;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// }
	// for (int i=0; i<n-1; i++){
	// 	diff = arr[i] - arr[i+1] - c;
	// 	if (diff>max) max = diff;
	// }
	// if (max==-1) cout << 0 << "\n";
	// else{
	// 	cout << max << "\n";
	// }
	// int t, n, arr[100],flag, firstPtr, secondPtr; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	firstPtr = 0;
	// 	secondPtr = 1;
	// 	for (int j=0; j<n; j++){
	// 		cin >> arr[j];
	// 	}
	// 	if (n==1) cout << "YES\n";
	// 	else{
	// 		flag = 1;
	// 		sort(arr, arr+n);
	// 		while (secondPtr<n){
	// 			if (arr[firstPtr]>=arr[secondPtr]){
	// 				flag = 0;
	// 				break;
	// 			}
	// 			firstPtr = secondPtr;
	// 			secondPtr++;
	// 		}
	// 		if (flag) cout << "YES\n";
	// 		else{
	// 			cout << "NO\n";
	// 		}
	// 	}
	// }
	
	// int x, y, diff, max; cin >> x >> y;
	// if (x==y){
	// 	if (x<=5){
	// 		if (x==1) cout << "1/1" << "\n";
	// 		else {
	// 			diff = 7 - x;
	// 			if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
	// 			else if (diff%3==0) {
	// 				cout << diff/3 << "/" << 2 << "\n";
	// 			} 
	// 			else{
	// 				cout << diff << "/" << 6 << "\n";
	// 			}
	// 		}
	// 	}
	// 	else{
	// 		cout << 1 << "/" << 6 << "\n";
	// 	}
	// }
	// else{
	// 	if (x>y) max = x;
	// 	else{
	// 		max = y;
	// 	}
	// 	diff = 7 - max;
	// 	if (diff==6) cout << 1 << "/" << 1 << "\n";
	// 	else{
	// 		// cout << diff << "\n";
	// 		if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
	// 		else if (diff%3==0) {
	// 			cout << diff/3 << "/" << 2 << "\n";
	// 		} 
	// 		else{
	// 			cout << diff << "/" << 6 << "\n";
	// 		}
	// 	}
	// }
	
	
	// int arr[1000];
	// int index = 0, num = 1;
	// while (index<1000){
	// 	if (num%3==0 || num%10==3){
	// 		num++;
	// 	}
	// 	else{
	// 		arr[index] = num;
	// 		num++; index++;
	// 	}
	// }
	// int t; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> num;
	// 	cout << arr[num-1] << "\n";
	// }	
	// int t, n,arr[100]; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n; 
	// 	for (int j=0; j<n; j++){
	// 		cin >> arr[j];
	// 	}
	// 	differentNum(arr,n);
	// }
	
	// int n, v, arr[50], numSell, flag, ele, index = 0; cin >> n >> v;
	// for (int i=0; i<n; i++){
	// 	cin >> numSell;
	// 	flag = 0;
	// 	for (int j=0; j<numSell; j++){
	// 		cin >> ele;
	// 		if (ele<v) flag = 1;
	// 	}
	// 	if (flag){
	// 		arr[index] = i+1;
	// 		index++;
	// 	}
	// }
	// cout << index << "\n";
	// for (int i=0; i<index; i++){
	// 	cout << arr[i] << " ";
	// }
	
	// int t, n; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	if (n%2==0) cout << n/2 << "\n";
	// 	else{
	// 		cout << (n/2) + 1 << "\n";
	// 	}
	// }
	
	// int n, m; cin >> n >> m;
	// char colors[100];
	// int wbg = 0, cmy = 0;
	
	// for (int i=0; i<n; i++){
	// 	for (int j=0; j<m; j++){
	// 		cin >> colors[i];
	// 		if (colors[i]=='C' || colors[i]=='M' || colors[i]=='Y') cmy++;
	// 		else{
	// 			wbg++;
	// 		}
	// 	}
	// }
	// if (wbg==(n*m)) cout << "#Black&White\n";
	// else{
	// 	cout << "#Color\n";
	// }
	
	// int t, n; cin >> t;
	// string s;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	cin >> s;
	// 	repeatedString(s);
	// }
	
	// int t,n, flag, x,y; cin >> t;
	// string s;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	cin >> s;
	// 	flag = 0;
	// 	x = 0, y = 0;
	// 	for (int j=0; j<n; j++){
	// 		if (x==1 && y==1){
	// 			flag = 1;
	// 			break;
	// 		}
	// 		if (s[j]=='L') x -= 1;
	// 		if (s[j]=='R') x += 1;
	// 		if (s[j]=='U') y += 1;
	// 		if (s[j]=='D') y -= 1;
	// 	}
	// 	if (x==1 && y==1) {
	// 		cout << "YES\n";
	// 		flag = 1;
	// 	}
	// 	else{
	// 		cout << "NO\n";
	// 	}
	// }
	
	// int t, n; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	if ((n+5)%2==0) cout << 5 << "\n";
	// 	else{
	// 		cout << 7 << "\n";
	// 	}
	// }
	
	// int a[4]; cin >> a[0] >> a[1] >> a[2] >> a[3];
	// string s; cin >> s;
	
	// int sum = 0;
	// for (int i=0; i<s.length(); i++){
	// 	if (s[i]=='1') sum+=a[0];
	// 	if (s[i]=='2') sum+=a[1];
	// 	if (s[i]=='3') sum+=a[2];
	// 	if (s[i]=='4') sum+=a[3];
	// }
	// cout << sum << "\n";
	
	// int n; cin >> n; cout << 25;
	
	// int n; cin >> n; cout << ans(n) << "\n";
	
	// int n, sum = 0; cin >> n;
	// for (int j=1; j<=n; j++){
	// 	for (int i=1; i<n; i++){
	// 	if (j%i==0) sum++;
	// }
	// 	cout << sum << " ";
	// }
	// cout << "\n";
	
	// int n, d, arr[100], sumSongs = 0; cin >> n >> d;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// 	sumSongs+=arr[i];
	// }
	// int number10 = 10 * (n-1);
	// if (number10+sumSongs>d) cout << -1 << "\n";
	// else{
	// 	int numJokes = number10/5;
	// 	numJokes += (d - (number10 + sumSongs)) / 5;
	// 	cout << numJokes << "\n";
	// }
	
	// int a, b, t, diff; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> a >> b;
	// 	if (a==b) cout << 0 << "\n";
	// 	else{
	// 		if (a>b){
	// 			diff = a - b;
	// 			if (diff%2==0) cout << 1 << "\n";
	// 			else{
	// 				cout << 2 << "\n";
	// 			}
	// 		}
	// 		else{
	// 			diff = b - a;
	// 			if (diff%2==0) cout << 2<< "\n";
	// 			else{
	// 				cout << 1 << "\n";
	// 			}
	// 		}
	// 	}
	// }
	
	// int n, m, k; cin >> n >> m >> k;
	// if (n>m || n>k) cout << "No\n";
	// else{
	// 	cout << "Yes\n";
	// }
	
	// int n, m; cin >> n >> m;
	// if (m==0){
	// 	if (n==1) cout << 0 << "\n";
	// 	else{
	// 		cout << "No solution\n";
	// 	}
	// }
	// else{
	// 	cout << m << "";
	// 	n--;
	// 	for (int i=0; i<n; i++){
	// 		cout << 0 << "";
	// 	}
	// 	cout << "\n";
	// }
	// int t, n; cin >> t;
	
	// for (int j=1; j<=t; j++){
	// 	n = j;
	// 	if (n<10) cout << n << " ";
	// 	else{
	// 		int sum = 0, flag;
	// 		for (int i=1; i<=n; i++){
	// 			flag = 1;
	// 			int d = i, last = d%10;
	// 			d/=10;
	// 			while (d>0){
	// 				if (d%10!=last){
	// 					flag = 0;
	// 					break;
	// 				}
	// 				d/=10;
	// 			}
	// 			if (flag) sum++;
	// 		}
	// 		cout << sum << " ";
	// 	}
	// }
	// cout << "\n";
	
	// int n; cin >> n;
	// int arr[10][10];
	// for (int i=0; i<n; i++){
	// 	arr[0][i] = 1;
	// 	arr[i][0] = 1;
	// }
	// for (int i=1; i<n; i++){
	// 	for (int j=1; j<n; j++){
	// 		arr[i][j] = arr[i][j-1] + arr[i-1][j];			
	// 	}
	// }
	// cout << arr[n-1][n-1] << "\n";
	
	// int n, k; cin >> n >> k;
	// cout << k * ((n/k)+1) << "\n";
	
	// int t, n; cin >> t;
	// string s; 
	// for (int i=0; i<t; i++){
	// 	cin >> n >> s;
	// 	for (int j=0; j<n; j++){
	// 		if (s[j]=='U') cout << 'D';
	// 		else if (s[j]=='D') cout << 'U';
	// 		else{
	// 			cout << s[j] << "";
	// 		}
	// 	}
	// 	cout << "\n";
	// }
	
	int r1, r2, c1, c2, d1, d2; cin >> r1 >> r2 >> c1 >> c2 >> d1 >> d2;
	int x,y,z,w;
	y = (r1 - c1 + d2) / 2;
	z = d2 - y;
	x = r1 - y;
	w = c2 - y;
	
	if (x==y || z==w || x<=0 || y<=0 || z<=0 || w<=0 || x>9 || y>9 || z>9 || w>9 || x==z || y==w || x==w || y==z || (x+y)!=r1 || (z+w)!=r2 || (x+z)!=c1 || (w+y)!=c2 || (y+z)!=d2 || (x+w)!=d1) cout << -1 << "\n";
	else{
		cout << x << " " << y << "\n" << z << " " << w << "\n";
	}
	return 0;
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST