Submission #501853

#TimeUsernameProblemLanguageResultExecution timeMemory
501853BornaCizmarevicXylophone (JOI18_xylophone)C++14
0 / 100
0 ms200 KiB
#include <bits/stdc++.h>
#include "xylophone.h"

using namespace std;
/*
int query (int a,int b){
	cout<<a<<" "<<b<<"\n";
	int pes;
	cin>>pes;
	return pes;
		
}
*/
void solve (int n){
	//ako je x pozitivan
		int rj1[n+65],l1,l2,l3;
		rj1[1]=0;
		int stg1 = 0;
		int odg1 = query (1, 2);
		int odg2 = query (2, 3);
		int odg3 = query (1, 3);
		l1=odg1;
		l2=odg2;
		l3=odg3;
		rj1[2] = odg1;
		if (odg3 == odg2 + odg1){
			rj1[3] = odg1 + odg2;
		}
		else {
			stg1 = 1;
			rj1[3] = odg1 - odg2;
		}
		int od1[n+65],od2[n+56],od3[n+99];
		for (int i = 4; i < n+1; i++){
			odg1 = odg2;
			odg2 = query(i-1, i);
			odg3 = query(i-2, i);
			od1[i]=odg1;
			od2[i]=odg2;
			od3[i]=odg3;
			if (odg3 == odg2 + odg1){
				if (stg1 == 0){
					rj1[i] = rj1[i - 1] + odg2;
				}
				else {
		
					rj1[i] = rj1[i - 1] - odg2;
				}
			}
			else {
				if (stg1 == 0){
					stg1=1;
					rj1[i] = rj1[i - 1] - odg2;
				}
				else {
					stg1=0;
					rj1[i] = rj1[i - 1] + odg2;
				}
			}
		}
		int odp1 = query (1, n);
		int mini1 = 0x3f3f3f3f;
		for (int i = 1; i < n+1; i++){
			mini1 = min(mini1 , rj1[i]);
		}
		mini1 = mini1*(-1) + 1;
		for (int i = 1;i < n+1; i++){
			rj1[i] = rj1[i] + mini1;
		}
	//ako je x negativan
		int rj2[n+65];
		rj2[1]=0;
		int stg2 = 1;
		int odg11 = l1/*0query (1, 2)*/;
		int odg22 = l2/*query (2, 3)*/;
		int odg33 = l3/*query (1, 3)*/;
		rj2[2] = (-1)*odg11;
		if (odg33 == odg22 + odg11){
			rj2[3] = odg11 + odg22;
			rj2[3]*=(-1);
		}
		else {
			stg2 = 0;
			rj2[3] = rj2[2] + odg22;
		}
		for (int i = 4; i < n+1; i++){
			odg11 = odg22;
			odg22 = od2[i]/*query(i - 1, i)*/;
			odg33 = od3[i]/*query(i - 2,i)*/;
			if (odg33 == odg22 + odg11){
				if (stg2 == 0){
					rj2[i] = rj2[i - 1] + odg22;
				}
				else {
					rj2[i] = rj2[i - 1] - odg22;
				}
			}
			else {
				if (stg2 == 0){
					stg2=1;
					rj2[i] = rj2[i - 1] - odg22;
				}
				else {
					stg2=0;
					rj2[i] = rj2[i - 1] + odg22;
				}
			}
		}
		int odp2 = query (1, n);
		int mini2 = 0x3f3f3f3f;
		for (int i = 1;i < n+1; i++){
			mini2 = min(mini2 , rj2[i]);
		}
		mini2 = mini2*(-1) + 1;
		for (int i = 1;i < n+1; i++){
			rj2[i] = rj2[i] + mini2;
		}
	//ispis
	int zzz=0,por=0;
	for (int i=1;i<n+1;i++){
		if (rj1[i]==1){
			por++;
		}
		if (rj1[i]==n and por==0){
			zzz++;
			break;
		}
	}
	int zpr=0;
	int niz[n+55];
	memset(niz,0,sizeof niz);
	for (int i=1;i<n+1;i++){
		niz[rj1[i]]++;
	}
	for (int i=1;i<n+1;i++){
		if (niz[i]==0){
			zpr=1;
		}
	}
		if (odp1 == n - 1 and zzz==0 and zpr==0){
			for (int i = 1; i < n+1; i++){
				cout << "answer(" << i << ", " << rj1[i] <<")\n"; 
			}
		}
		else {
			for (int i = 1; i < n+1; i++){
				cout << "answer(" << i << ", " << rj2[i] <<")\n"; 
			}
		}
	return;
}

/*int main (){
	
	int n;
	cin>>n;
	solve(n);
	
	return 0;
}*/

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:33:7: warning: variable 'od1' set but not used [-Wunused-but-set-variable]
   33 |   int od1[n+65],od2[n+56],od3[n+99];
      |       ^~~
xylophone.cpp:109:7: warning: unused variable 'odp2' [-Wunused-variable]
  109 |   int odp2 = query (1, n);
      |       ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...